jquery - 仅在所有子级完成动画后才开始回调动画

标签 jquery

我有一个 div,其中我想立即淡出所有子元素,但只有在所有子元素完成淡出后才淡入新元素。使用下面我当前的代码,#Message div 在第一个子元素之后开始淡入,并且实际上放置在最后一个子元素之后。一旦最后一个子元素完全淡出,#Message div 就会“跳”到适当的位置。我想避免这种“跳跃”。

$('#DIV').children().fadeOut("slow", function() {
    $('#Message').fadeIn("slow");
});

如何确保在 #DIV 的所有子元素上完成 fadeOut() 之前,fadeIn() 动画不会开始?

编辑:我应该注意我的#Message div 位于#DIV 的内部

最佳答案

您需要使用deferred objects专门针对这样的场景。最简单的部分是动画已经默认创建延迟对象:http://jsfiddle.net/rkw79/zTxrt/

$.when(
    $('#DIV').children().each(function(i,o) {
        $(o).fadeOut((i+1)*1000);
    })
)
.done(function() {
    $('#Message').fadeIn("slow");
});

关于jquery - 仅在所有子级完成动画后才开始回调动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449999/

相关文章:

php - 如何设置下面的if isset语句

javascript - JavaScript 中图像的文件路径

jquery - 鉴于这些要求,我应该如何构建我的 HTML5 list ?

javascript - 如何使用这个 JavaScript

javascript - 检查元素如何获得焦点

javascript - 如果选择了子菜单,则展开父菜单

javascript - 改变除一个 Div 之外的所有元素的不透明度

jquery 滚动和 css 帮助

php - jQuery AJAX 加载两次

javascript - jquery 自动完成文本框不适用于更新面板