jquery延迟了随机数量的动画

时间:2011-09-02 21:32:38

标签: jquery

我在随机计时器上运行了 x 个动画。我还有在所有动画完成后需要运行的代码。

我认为使用延迟,但它似乎没有像我希望的那样运行。这是一个链接(您可能需要运行几次才能使其无效):

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);

有关如何在所有动画完成后等待回调的建议吗?

1 个答案:

答案 0 :(得分: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