2011-09-02 78 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

不客气:)快乐编码! –