2014-09-28 56 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