10

addClass()jQueryを遅らせる方法はありますか? たとえば、このコード

$('#sampleID').delay(2000).fadeOut(500).delay(2000).addClass('aNewClass');

ページをロードすると、ID「sampleID」にクラス「aNewClass」がすでに含まれています。この問題を解決するには?私が欲しいのは、 addClass が終了した後に発生することfadeOut()です。

4

5 に答える 5

21

addClass呼び出しを直接遅延させることはできませんが、このようなパラメーターとして関数を受け取るキュー呼び出しでラップする場合は遅延できます。

$(this).delay(2000).queue(function(){$(this).addClass('aNewClass')});

この投稿を参照してください:jQuery:addClass()などの間でdelay()を呼び出すことはできますか?

于 2013-02-26T08:37:01.543 に答える
12

私が望むのは、 addClass がfadeOut() を終了した後に発生することです。

次のようにコールバック関数をfadeOut使用できます。

$('#sampleID').fadeOut(500, function(){
  $(this).addClass('aNewClass');
});
于 2011-01-29T09:54:31.787 に答える
1

delayこれはエフェクト キューにのみ影響するため、これを行うことはできません。キューを使用して実装されていない場合、後のコードの実行は「一時停止」しません。

これを行う必要がありますsetTimeout

$('#sampleID').delay(2000).fadeOut(500, function() {
    setTimeout(function() {
        $(this).addClass('aNewClass');
    }, 2000);
});

これは のcompleteコールバックを使用しfadeOut、関数を 2 秒後に実行するように設定します。

于 2011-01-29T09:54:41.583 に答える
0

コールバックを使用する必要があります。

$('#sampleID').delay(2000).fadeOut(500,function(){
   $(this).delay(2000).addClass('aNewClass');
});

http://api.jquery.com/fadeOut/

于 2011-01-29T09:53:46.360 に答える
0

CSS transition で setTimeout を使用することもできます。

setTimeout(function() {
    $('#sampleID').addClass('aNewClass');
}, 2000);

そして、CSS

#sampleID {
transition: opacity 1s ease;
opacity: 0;
}

#sampleID.aNewClass {
opacity: 1;
}
于 2017-06-08T19:53:40.340 に答える