2011-11-21 81 views
16

我想知道如果是在fadeIn开始之前等待fadeOut完成的任何方法,因为当我运行下面的代码时,它将一个div放在另一个下面,然后当它消失时,它向上移动......看起来有点难看。jQuery - 等待fadeout在运行fadeIn之前完成

代码如下:

$('.sidebarform').fadeOut('slow'); 
$('.sidebarsuccess').fadeIn('slow'); 

回答

39

fadeOut函数,它执行时的动画完成回调:

$('.sidebarform').fadeOut('slow', function() { 
    $('.sidebarsuccess').fadeIn('slow'); 
}); 
+8

keep i不管你的选择器是否过于普通,完成函数会在每个元素完全淡出时触发,所以如果有一些元素已经隐藏起来,它会立即触发。 – box86rowh

+2

我已经使用了:可见选择器来解决@ box86rowh描述的问题。请参阅:http://api.jquery.com/visible-selector/ –

16

另一种选择是使用的承诺,这将等待所有未决动画即使他们在其他地方启动,也可以在.sidebarform上完成:

$('.sidebarform').fadeOut('slow').promise().done(function() { 
    $('.sidebarsuccess').fadeIn('slow'); 
}); 
+0

虽然其他答案有绿色复选标记,但我相信此答案更具体地解决了我的问题。 – Lewis

相关问题