2011-11-21 30 views
16

fadeInが完了するまで待つ方法があるかどうかは、次のコードを実行すると、それが消えたときにそれは上に動いて...少し醜いように見えます。次のようにjQuery - fadeInを実行する前にfadeOutが完了するまで待つ

コードは次のとおりです。

fadeOut機能は、それがアニメーションが行われたときに実行するコールバックを持っている
$('.sidebarform').fadeOut('slow'); 
$('.sidebarsuccess').fadeIn('slow'); 

答えて

39

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

keep iあなたのセレクタがあまりにも一般的である場合、完全にフェードアウトされたときには、すべての要素に対して完了関数が起動されるので、すでに隠されている要素があれば、すぐに起動します。 – box86rowh

+2

私は、@ box86rowhで説明されている問題に対処するために:visibleセレクタを使用しました。参照:http://api.jquery.com/visible-selector/ –

16
別のオプションは、すべての保留中のアニメーションを待つことになる約束を使用している

他の場所で開始されたとしても最初に完了するには、.sidebarformを使用してください。

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

もう1つの回答に緑色のチェックマークが付いていますが、私はこの回答が自分の問題をより具体的に解決すると考えています。 – Lewis