一部の jQuery アニメーション メソッドは、 として記述された引数を取りますcomplete
。これは、アニメーションが終了すると呼び出される関数です。例えば:
$(obj).slideUp(duration, easing, complete());
complete
これは、以下のアニメーションの後に呼び出すのとどう違うのですか?
$(obj).slideUp(duration, easing)
.complete();
一部の jQuery アニメーション メソッドは、 として記述された引数を取りますcomplete
。これは、アニメーションが終了すると呼び出される関数です。例えば:
$(obj).slideUp(duration, easing, complete());
complete
これは、以下のアニメーションの後に呼び出すのとどう違うのですか?
$(obj).slideUp(duration, easing)
.complete();
違いは、2 番目のケースでは がアニメーションの開始complete
直後に呼び出され、コールバックとして渡すとアニメーションの終了時にトリガーされることです。
アニメーションは実際には非同期である可能性があるため、アニメーションを起動した後も JavaScript の実行が継続されます。そのため、直後に呼び出しても、アニメーションの完了後に呼び出しが実行されることは保証されず、アニメーションが開始された後にのみ実行complete()
されます$(obj).slideUp(duration, easing);
。complete
また
$(obj).slideUp(duration, easing, complete());
本当にあるべき
$(obj).slideUp(duration, easing, complete);
実際、最初のケースでは、アニメーションが開始する前complete
でも関数を呼び出しています!
最後に、2 番目の例が間違っているように見えることに注意してください。
$(obj).slideUp(duration, easing)
.complete();
これは への呼び出しで呼び出しをチェーンしてslideUp
いcomplete
ますが、jquery オブジェクトにはcomplete
メソッドがありません。おそらく次のようになります。
$(obj).slideUp(duration, easing);
complete();
実際には、質問の以前の編集にあったように。
$(obj).slideUp(duration, easing, complete());
これは間違っています。これは、呼び出さcomplete
れる前に slideUp
呼び出しています。
$(obj).slideUp(duration, easing);
complete();
これが実行slideUp
され、直後に が呼び出されますcomplete
。が呼び出されるまでに、アニメーションはまだ終了していない可能性がありますslideUp
(実際、確実に終了することはありませんcomplete
) 。
$(obj).slideUp(duration, easing, function () {
alert('Complete!');
});
// or
$(obj).slideUp(duration, easing, complete);
// ^^ look ma, no () !
今、これはあなたがそれを使用することになっている方法です。"完了!" slideUp
アニメーションが終了した後にのみ警告されます。