32

toggleClass が完了したら関数を実行するにはどうすればよいですか? 私は次のことを試しましたが、運がありません:

$("#loader").toggleClass('fadeOut', function () {
    alert('a');
});
4

2 に答える 2

75

jQuery には、選択した要素で実行中のすべてのアニメーションが完了した後に解決される promise を返す promise メソッドがあります。その時点で、done メソッドにバインドできます。

$("#loader").toggleClass('fadeOut',600).promise().done(function(){
    console.log('a');
});

http://jsfiddle.net/skram/4x76J/

注:アニメーションtoggleClassには jQuery UI が必要です。

于 2012-04-25T18:48:13.787 に答える
1

toggleClassはすぐに実行されるため、のコールバックは必要ありません。次の行にをtoggleClass配置するだけで、実行alert('a')後にアラートが表示toggleClassされます。

編集: jQueryUIエフェクトが必要なようです-toggleClass残念ながらコールバック関数はありません。

おそらく、独自のトグル関数を作成する必要があります。フェードイン/フェードアウトの切り替えについては、以下を参照してください。

var $loader = $("#loader");
if ($loader.is(':visible')) {
  $loader.fadeOut(100, function () {
      alert('fade out complete');
  });
} else {
  $loader.fadeIn(100, function () {
      alert('fadeIn complete');
  });
}
于 2012-04-25T18:17:54.157 に答える