我试图通过使用setTimeout来延迟每个循环。
$(".video_nav .item_container > .item").each(function() {
var button = $(this);
setTimeout(function(i) {
alert("test");
button.trigger("click");
},2000);
});
警报或点击事件未触发。我哪里做错了?我希望每次循环迭代都是2秒。
答案 0 :(得分:1)
我不知道我的问题是否正确,但你想在2秒后循环播放一些元素?
使用Jquery解决此问题的方法:
您可以将延迟方法(https://api.jquery.com/queue/)与队列方法(https://jsfiddle.net/crix/bb4nbkts/)结合使用
-cp
有关工作示例,请检查此链接: JSFIDDLE DEMO
希望这对你有所帮助。
答案 1 :(得分:-1)
尝试在此背景下使用箭头功能,
$(".video_nav .item_container > .item").each(function(i) {
setTimeout(() => {
$(this).trigger("click");
}, i * 2000);
});
代码中的问题是this
上下文。在普通的setTimeout的callBack中,this
将指向window
。所以有箭头函数,它会将最近的上下文this
值绑定到其中。
此外,您必须延迟(i * 2000)
,然后只有延迟将变为0,2000,4000,依此类推。这将使您看到callBack的工作时间间隔为2秒。