我只是想在每次循环jQuery的每次迭代后添加一个暂停,我似乎无法弄明白。
$(".item").each(function(i){
var el = this;
var timer = setTimeout(function(){
$(el).trigger("click");
}, 500);
});
这不是每1/2秒触发一次,而是一次触发点击所有项目。
我想要这样的东西(伪代码):
$(".item").each(function(i){
$(this).trigger("click");
wait(500); // wait a half second before the next iteration
});
这有什么工作方法吗?
答案 0 :(得分:4)
你无法用$.each
真正做到这一点。您可以使用setTimeout
并保留对您当前所在索引的引用:
function process(elements, cb, timeout) {
var i = 0;
var l = elements.length;
(function fn() {
cb.call(elements[i++]);
if (i < l) {
setTimeout(fn, timeout);
}
}());
}
process($('.item'), function() {
$(this).click();
}, 500);
答案 1 :(得分:2)
Hiya尝试这个,或者你可以写一个你已经尝试过的SetTimeOUt函数
演示=&gt; http://jsfiddle.net/Yq2SL/2/ you will see different parent of div with class=item
API:http://api.jquery.com/jQuery.dequeue/&amp; http://api.jquery.com/jQuery.queue/#jQuery-queue1
您阅读的资料很少:
http://forum.jquery.com/topic/delay-and-click-issue
http://blog.project-sierra.de/archives/1559
希望它有助于:)
示例代码:
$(".item").delay(500).queue(function(){
$(this).trigger("click");
$(this).dequeue();
});