addClass()
jQueryを遅らせる方法はありますか? たとえば、このコード
$('#sampleID').delay(2000).fadeOut(500).delay(2000).addClass('aNewClass');
ページをロードすると、ID「sampleID」にクラス「aNewClass」がすでに含まれています。この問題を解決するには?私が欲しいのは、 addClass が終了した後に発生することfadeOut()
です。
addClass呼び出しを直接遅延させることはできませんが、このようなパラメーターとして関数を受け取るキュー呼び出しでラップする場合は遅延できます。
$(this).delay(2000).queue(function(){$(this).addClass('aNewClass')});
この投稿を参照してください:jQuery:addClass()などの間でdelay()を呼び出すことはできますか?
私が望むのは、 addClass がfadeOut() を終了した後に発生することです。
次のようにコールバック関数をfadeOut
使用できます。
$('#sampleID').fadeOut(500, function(){
$(this).addClass('aNewClass');
});
delay
これはエフェクト キューにのみ影響するため、これを行うことはできません。キューを使用して実装されていない場合、後のコードの実行は「一時停止」しません。
これを行う必要がありますsetTimeout
:
$('#sampleID').delay(2000).fadeOut(500, function() {
setTimeout(function() {
$(this).addClass('aNewClass');
}, 2000);
});
これは のcomplete
コールバックを使用しfadeOut
、関数を 2 秒後に実行するように設定します。
コールバックを使用する必要があります。
$('#sampleID').delay(2000).fadeOut(500,function(){
$(this).delay(2000).addClass('aNewClass');
});
CSS transition で setTimeout を使用することもできます。
setTimeout(function() {
$('#sampleID').addClass('aNewClass');
}, 2000);
そして、CSS
#sampleID {
transition: opacity 1s ease;
opacity: 0;
}
#sampleID.aNewClass {
opacity: 1;
}