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

でこれを実際に行うことはできません$.eachsetTimeout現在のインデックスへの参照を使用して保持できます。

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 に答える