完成所有动画后回调

时间:2013-12-09 13:12:55

标签: javascript jquery jquery-animate jquery-deferred

Code

animate内的所有do_animations方法完成后,我需要帮助进行回调。对于一个animate,我可以调用promisedone函数。我尝试使用$.Callbacs,但我不知道如何使用fire方法制作承诺对象。

function random_num(a, b) {
    return Math.floor(Math.random() * (b - a + 1)) + a;
}

function do_animations() {
    var n = random_num(1, 5);
    for (var i = 0; i < n; i++) {
        var width = random_num(-50, 50);
        $('#rec').animate({'left': '+=' + width + 'px'}, 300);
    }
}

$(document).ready(function(){
    do_animations();
});

最佳解决方案是

do_animations().done(function(){ ... });

1 个答案:

答案 0 :(得分:0)

使用promise():

DEMO

function do_animations() {
    var n = random_num(1, 5),
        $rec = $('#rec');
    for (var i = 0; i < n; i++) {
        var width = random_num(-50, 50);
        $rec.animate({'left': '+=' + width + 'px'}, 300);
    }
    return $rec.promise();
}

$(document).ready(function(){
    do_animations().done(function(){ alert("All animations done!") });
});