2014-09-06 137 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