You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ClipboardJS和jQuery实现优惠券复制时的文本回显异常问题

解决多优惠券按钮复制后文本恢复错误的问题

我明白你遇到的困扰了——当页面存在多个优惠券按钮时,复制完成后恢复的文本总是第一个优惠券的码,这是因为你在恢复文本时的元素选择逻辑出了问题。

问题根源

你原本的setTimeout回调里写了这样的代码:

$('.coupon_clipper').closest('.coupon_clipper').attr('data-clipboard-text')

这里的$('.coupon_clipper')会选中页面上所有带coupon_clipper类的按钮,再调用closest(其实完全没必要,因为元素本身就是目标按钮),最终只会取第一个匹配元素的data-clipboard-text值,所以不管点击哪个按钮,恢复的都是第一个优惠券码。

修复方案

其实ClipboardJS的success事件对象里,e.trigger就是当前被点击的那个按钮元素,我们直接从它身上获取对应的data-clipboard-text值就可以了,不需要去全局查找元素。

修改后的JavaScript代码如下:

var cClip = new ClipboardJS('.coupon_clipper');
cClip.on('success', function(e) {
  $(e.trigger).text('Clipped');
  e.clearSelection();
  setTimeout(function() {
    // 直接从当前触发元素获取自身的data属性
    $(e.trigger).text($(e.trigger).attr('data-clipboard-text'));
    // 或者用jQuery的data方法更简洁:
    // $(e.trigger).text($(e.trigger).data('clipboard-text'));
  }, 250);
});

效果验证

把修改后的代码替换原来的JS部分后测试:

  • 点击第一个按钮,复制后显示"Clipped",250ms后恢复为"10PERCENT"
  • 点击第二个按钮,复制后显示"Clipped",250ms后恢复为"1PERCENT"
    每个按钮都能正确恢复自己的优惠券码了。

内容的提问来源于stack exchange,提问作者FuzzyBeam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:22:47