4

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

这有什么工作方法吗?

4

2 回答 2

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);
于 2013-05-01T22:13:44.310 回答
2

您好,试试这个,或者您可以编写一个您已经尝试过的 SetTimeOUT 函数

演示 => http://jsfiddle.net/Yq2SL/2/ you will see different parent of div with class=item

API:http ://api.jquery.com/jQuery.dequeue/ & 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(); 
});
于 2013-05-01T22:10:29.410 回答