2014-09-06 71 views
0

我該如何在循環中執行一個函數,以便循環中的下一個元素僅在上一個元素完成時執行。以循環方式執行循環中的所有元素?

$(".welcome>p").each(function() { 
    var $this = $(this); 
    setTimeout(function() { 
     $this.animate({ 
      opacity: 1 
     }, 600); 
    }); 

}); 

因此,此代碼中的所有p元素將同時運行。我怎樣才能改變它,讓p元素按順序一個接一個地顯示出來?

感謝, YonL

回答

3

each第一個參數是index,所以你可以使用該索引遞增setTimeout這樣的:

$(".welcome>p").each(function(idx) { 
    var $this = $(this); 
    setTimeout(function() { 
     $this.animate({ 
      opacity: 1 
     }, 600); 
    }, idx * 600); 

}); 
+0

謝謝!有用! – YonL 2014-09-06 17:56:56