2011-09-02 85 views
3

我有x運行在隨機定時器上的動畫數量。我還有需要在所有動畫完成後運行的代碼。jQuery隨機數動畫

我以爲使用延期,但它似乎並沒有按照我希望的方式運行。這裏有一個鏈接(您可能需要運行幾次,它不工作):

http://jsfiddle.net/N8nFU/

代碼:

var callback = function() { 
    alert('done!'); 
}; 

var animations; 
for (var i = 0; i < $('div').length; i++) { 
    var random = Math.random() * (800 - 100) + 100; 
    animations = $('div').eq(i).slideUp(random); 
} 

$.when(animations).done(callback); 

如何等待回調的任何建議,被稱爲一旦所有的動畫都完成了?

+0

上面的代碼是校正版本。在那裏有不正確的版本,對於下一個出現的人來說會很好。 –

+0

@joshjs:你是對的,我錯誤地複製了錯誤的版本。固定。謝謝! –

回答

4

你總是壓倒animations變量。所以你傳遞給$.when的對象將是上一次迭代的對象。

它們添加到一個數組並調用$.when與數組:

var animations = []; 
for (var i = 0; i < $('div').length; i++) { 
    var random = Math.random() * (800 - 100) + 100; 
    animations.push($('div').eq(i).slideUp(random)); 
} 

$.when.apply($, animations).done(callback); 

DEMO

參考:.apply

+0

就是這樣!非常感謝! – MLatzke

+0

不客氣:)快樂編碼! –