javascript – 连续运行jQuery动画

前端之家收集整理的这篇文章主要介绍了javascript – 连续运行jQuery动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一组淡出动画,之后我想运行一组动画调用.

如何确保一个接一个地运行?

如果我这样做:

$(div1).fadeOut(600);
$(div2).fadeOut(600);
$(div3).fadeOut(600);

$(div4).animation({opacity:1},600);
$(div5).animation({opacity:1},600);
$(div6).animation({opacity:1},600);

动画并行运行.

上面的代码只是问题的简化/抽象.我不能将所有调用分组到一个函数中,并且在现实生活中有可变数量的元素,每个元素由它自己的类管理.

解决方法

你可以使用jQuery deferred objects
var deferred = [
    new $.Deferred(),new $.Deferred(),new $.Deferred()
];

$(div1,div2,div3).each(function(i,elem) {
    $(elem).fadeOut(600,function() { deferred[i].resolve(); });
});

$.when(deferred[0],deferred[1],deferred[2]).done(function() {
    $(div4,div5,div6).each(function(i,elem) {
        $(elem).animation({ opacity : 1 },600);
    });
});

正如@Felix在评论中指出的那样,$.when的更清晰的语法如下所示:

$.when.apply(null,deferred).done(function() {
    $(div4,600);
    });
});

猜你在找的jQuery相关文章