【发布时间】:2016-04-12 14:24:48
【问题描述】:
我正在尝试使用 setTimeout 来延迟每个循环。
$(".video_nav .item_container > .item").each(function() {
var button = $(this);
setTimeout(function(i) {
alert("test");
button.trigger("click");
},2000);
});
警报或点击事件未触发。我哪里做错了?我希望每次循环迭代为 2 秒。
【问题讨论】:
-
选择器是否正确?如果是,那么至少
alert()应该可以工作。 -
this不是你想的那样。 -
@SLaks 我改变了它,我应该每 2 秒收到一次警报,但什么都没有?
-
我终于收到了一个警报,但发生的情况是 2 秒后警报一个接一个地出现,而不是中间的 2 秒。
-
出现这种情况是因为 setTimeout 是异步工作的——每次调用它都会创建一个新线程,而不是等待完成。然后每个线程将在 2 秒后触发。您需要使用同步方法等待“就地”循环完成。这在 JavaScript 中不存在开箱即用 - here 你可以找到这样的“忙等待”功能。
标签: jquery