10

このコードの何が問題になっていますか?私はこの効果を得ようとしています:fadeOut(500)そしてattr('class','myClass')600ミリ秒遅れます..そしてdelay(600)再び、そしてfadeIn(500)。遅延は正しく発生しますが、遅延は発生していません。まだフェードattr()しているときに発生します。#myDiv:'(

$('#myDiv').fadeOut(500)
           .delay(600)
           .attr('class','myClass')
           .delay(600)
           .fadeIn(500);  
4

1 に答える 1

28

.delay()アニメーションまたはキューにのみ影響しfxます(特に別のキューを指定しない限り)。チェーンとキューイングは2つの明確に異なる概念であり、チェーンは同じjqueryセットの使用を継続しますが、それはそのセット内の要素のイベントキューとはまったく異なることに注意してください。

.attr()呼び出しに影響を与えるには、次のようにを使用して、同じキューへのコールバックとして呼び出しを追加する必要があります.queue()

$('#myDiv').fadeOut(500)
           .delay(600)
           .queue(function(next) { $(this).attr('class','myClass'); next(); })
           .delay(600)
           .fadeIn(500); 

また、これを少しきれいにする可能性のある.addClass().removeClass()および利用可能な方法があることに注意してください:).toggleClass()

于 2010-05-10T23:34:39.510 に答える