【发布时间】:2015-03-14 21:20:09
【问题描述】:
HTML:
<a href="#" class="change">Old Text</a>
<a href="#" class="change">Old Text</a>
我想用 jQuery 更改“文本”,延迟两秒钟,然后将其设置回原来的状态。我试过超时和延迟失败。该页面有多个具有相同文本“添加到购物车”的商品,然后切换到“已添加”,然后再返回。
jQuery:
$('.change').html('first').delay(2000).html('second')
这失败了。它忽略第一个,直接跳到第二个
_x = $(this);
$(_x).html('New Text');
_t = setTimeout(function(){
$(_x).html('Old Text');
},2000);
如果用户在 2 秒重置之前单击并且未触发另一个,则此方法有效。如果有人单击 #1,然后在 #1 重置文本之前单击 #2,则它适用于 #2,但 #1 上的文本保留在新文本中。
我认为,由于它在函数内部,所以每个对象都会使用它自己的 _t 实例来实例化超时,但显然不是。
我不确定它是否重要,但元素有时是动态加载的,并且点击绑定是相应设置的
$(element).on('click','.change',function(_e) { ...
我该如何处理?提前谢谢你。
【问题讨论】:
-
尝试使用jquery - $.each,它将遍历所有元素。另外,如果你可以创建一个 jsfiddle,调试起来会很方便。