2014-09-28 68 views
0

我试图让一些元素在Javascript/jQuery中一次褪色,而我根本无法获得任何工作。试图在jQuery每个循环中尝试添加延迟类

我试过StackOverflow上的每个“解决方案”都存在这个问题,没有任何工作。或者1)我试图一次动画所有动画的元素,2)根本没有动画,或者3)我得到一个Javascript错误。看看我目前的代码:

 $('.tagline').each(function(i, e) { 

       setTimeout(function(i, e) { 
        e.addClass('animated'); 
       }, 500 * i); 
     }); 

上面的代码告诉我e is undefined。我究竟做错了什么?

回答

4

setTimeout回调不接受任何参数,要覆盖每个回调的ie参数与undefined值:

$('.tagline').each(function(i, e) { 
    setTimeout(function() { 
     $(e).addClass('animated'); 
    }, 500 * i); 
}); 
+0

+1 from me。我写了完全相同的代码块 – 2014-09-28 15:52:18

+0

谢谢你。 – ReactingToAngularVues 2014-09-28 16:55:07

0

你可以做这样的事情http://jsfiddle.net/rg45yduh/

$('.tagline').each(function (i) { 
    $(this).delay((i++) * 500).fadeIn(500); 
}); 

或者添加一个类

$('.tagline').each(function (i) { 
    $(this).delay((i++) * 500).addClass('animated'); 
}); 
1

如果你喜欢控制自己的推子,你总是可以采取数据方法。如果你想要回退一下,你总是可以添加一个条件,如果为空。 http://jsfiddle.net/rg45yduh/3/

$(function(){ 
    $('.tagline').each(function(){ 
     delay=$(this).data('time-delay'); 
     fadeout= $(this).data('fade-out');    
     $(this).delay(delay).fadeIn(fadeout); 
    }) 
}) 
+1

这很聪明。谢谢! – ReactingToAngularVues 2014-09-28 16:56:32

+0

你的欢迎。我使用这种方法很多:) – Dave 2014-09-28 21:46:06