HTML:
<a href="#" class="change">Old Text</a>
<a href="#" class="change">Old Text</a>
我希望用jQuery改变“Text”,延迟两秒后将其设置回原始状态。我尝试过timeout和delay,但没有成功。页面上有多个具有相同文本“Add to cart”的项目,会切换到“已添加”,然后再切换回来。
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) { ...
我该如何处理这个问题?谢谢您的帮助。