2017-02-11 9 views
0
var J_lis = $(".display");   
// loop thought each element 
J_lis.each(function(g){ 
    g = self.setInterval(function() { 
    alert("this"); 
    }, 1000); 
}) 

私の意図は、各要素にループを設定し、それぞれに間隔を設定することです。 1番目の要素は移動し、2番目の要素は1000などの後に開始されます。しかし、このコードは1で1つ行くことはありません、それは4回のクイックループに行くと停止し、再び4回行く。jqueryの各ループで1を1ずつ設定するにはどうすればよいですか?

が、私はそれが各によって各かかわらず行きたいと私は望んでいたが、私はjqueryのそれぞれの上で設定したかったように、それぞれがうまく1000

for (var f=0; f < J_lis.length; f++){ 
    f = self.setInterval(function() { 
    // code 
    }, 1000); 
} 

このコードの動作を待って、それを行う方法があります?

答えて

0

ループの間隔を長くする必要があります。ループインデックスに関連するインターバル遅延を設定します。例えば

$(".display").each(function(i,ele){ 
 
    setTimeout(function() { 
 
    console.log($(ele).text()); 
 
    }, (i+1)*1000); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="display">Element 1</div> 
 
<div class="display">Element 2</div> 
 
<div class="display">Element 3</div> 
 
<div class="display">Element 4</div> 
 
<div class="display">Element 5</div>

(index + 1) * 1000よう

+0

それは自己とてclearIntervalの必要はありませんそれを止めるのですか? –

+0

@deecheok 'setTimeout()'は一度実行されますが、 'setInterval()'は無制限に実行され、 'clearInterval'を停止する必要があります。 – Mohammad

+0

ああ、ありがとう、私はあなたの方法を使用します。 –

関連する問題