3

display:noneフェードアウト後に非表示にしたい div ( ) があるので、次のように入力します。

$('.element').click(function(){
    $(this).animate({opacity:"0"},{duration:200});
    $(this).delay(200).css('display','none');
});

そして、css では delay() が機能しないことを突然思い出しました。以前は、この横たわっている setTimeout を少し修正していましたが、どこにも見つからないため、次のようなランダムなものを試しました。

$('.element').click(function(){
    $(this).animate({opacity:"0"},{duration:200});
});
$('.element').click(function(){
    setTimeout(function(){
        $(this).css('display','none');
    },200);
});

それでもうまくいきません。誰かがここで私を助けてくれますか?

4

4 に答える 4

4

jQuery の .animate() にはコールバック機能があり、アニメーションが完了したら実行される匿名関数を送信できます。

$(this).animate({opacity:"0"},{duration:200}, function(){
   $(this).css('display','none');
});

ソース: jQuery アニメーション

于 2012-08-02T12:22:30.853 に答える
1

アニメーション コールバック関数を使用します。この関数は、アニメーションが完了すると初期化されます。

構造はこんな感じです = .animate( properties [, duration] [, easing] [, complete] )

例:

$('.element').click(function(){
    $(this).animate({opacity:"0"},200,function() {//use callback here
       $(this).css('display','none');
    });
});
于 2012-08-02T12:22:23.360 に答える
1

よりエレガントな方法は、アニメーションの後に実行する callBack 関数を指定することです。

例えば:

$(this).animate({opacity:"0"},200,function(){

     $(this).css('display','none');

});
于 2012-08-02T12:26:25.240 に答える
0
$('.element').fadeOut('slow', function() {
    // Animation complete. do something here if you want
 });
于 2012-08-02T12:23:27.890 に答える