在迭代之间的jQuery每个循环中等待/暂停/休眠

时间:2013-05-01 22:05:57

标签: javascript jquery

我只是想在每次循环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
});

这有什么工作方法吗?

2 个答案:

答案 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(); 
});