4

さまざまな要素で満たされたオブジェクトを使用して反復処理しeach()、その要素に対してアクションを実行します。そう:

var arts = $("#press-sqs > article");
shuffle(arts);

$(arts).each(function(){
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
    }, 2000);   
}); 

shuffle()基本シャッフル機能です)

私が理解できないのは、現在の要素にセレクターとしてアクセスし、それに対してアクションを実行する方法です。$(this)です$(window)

最後に、最後に到達したら反復を再度開始し、art無限にループし続ける関数が必要になります。

4

3 に答える 3

9

を使用している場合setInterval、順序を入れ替えても同じ結果が得られます。

setInterval(function() {
    $(arts).each(function(){
         doSomethingWith(this);
    });   
}, 2000);

私はあなたがここであなたが思っていることを望んでいるとは思わない. 私はあなたが欲しいと思います:

var i = 0;
setInterval(function() {
    var art = arts[i++];
    doSomethingWith(art)
    if(i >= arts.length) i = 0;
}, 2000); 
于 2012-09-25T18:13:52.393 に答える
4

jQuery の.each(...)メソッドは、「現在の」要素 (およびそのインデックス) をコールバックに渡します。thisあまり複雑なことをする必要がない場合に便利です。

$(arts).each(function(i, current){
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
    }, 2000);   
});

上記では、現在の要素は setInterval コールバック内で、currentたとえば として使用できます。この要素はそのまま「生の」形式で渡されることに注意してください。そのthisため、jQuery メソッドを呼び出したい場合は、同じ方法でラップする必要があります$(current)

于 2012-09-25T18:11:52.713 に答える
2

それを使用します。

$(arts).each(function(){
    var that = this;
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
         doSomethingWith(that)
    }, 2000);   
});
于 2012-09-25T18:05:36.717 に答える