jQuery - 在运行fadeIn之前等待fadeOut完成

Big*_*ies 24 jquery

我想知道在fadeIn开始之前是否有任何方式等待fadeOut完成,就像我运行以下代码时,它将一个div放在另一个下面,然后当它淡出时它会向上移动...看起来有点丑陋.

代码如下:

$('.sidebarform').fadeOut('slow');
$('.sidebarsuccess').fadeIn('slow');
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 51

fadeOut函数具有在动画完成时执行的回调:

$('.sidebarform').fadeOut('slow', function() {
    $('.sidebarsuccess').fadeIn('slow');
});
Run Code Online (Sandbox Code Playgroud)

  • 请记住,如果你的选择器过于笼统,当完全消失时,每个元素都会触发完成函数,所以如果有一些元素已经被隐藏,它会立即触发. (11认同)
  • 我使用了:visible选择器来解决@ box86rowh描述的问题.请参阅:http://api.jquery.com/visible-selector/ (3认同)

kra*_*s88 25

另一种选择是使用promise,等待.sidebarform上的所有待处理动画首先完成,即使它们是在其他地方启动的:

$('.sidebarform').fadeOut('slow').promise().done(function() {
    $('.sidebarsuccess').fadeIn('slow');
});
Run Code Online (Sandbox Code Playgroud)