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

我的意圖是設置一個循環遍歷每個元素併爲每個元素設置一個間隔。所以第一個元素去,第二個元素將在1000之後開始,等等。但是這個代碼不會一個接一個地執行,它會快速循環4次,然後停止並再次執行4次。如何在jquery的每個循環中設置時間間隔1?

我希望它去儘管每個每個和每個等待1000

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

此代碼的工作就好了像我想要的,但我想設置每個jQuery的,有沒有做這件事的方式?

回答

0

您應該增加循環中的間隔延遲。設置與循環索引相關的間隔延遲。例如像(index + 1) * 1000

$(".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>

+0

做到這一點停止它的自我,無需clearInterval的? –

+0

@deecheok setTimeout()'運行一次,但'setInterval()'運行無限,需要'clearInterval'來停止它。 – Mohammad

+0

哦,非常感謝你,我會用你的方式。 –