48

要素とそのすべての子要素を数秒遅れてフェードアウトさせたい。しかし、指定された遅延時間の後に効果が開始されるように指定する方法が見つかりませんでした。

4

6 に答える 6

77
setTimeout(function() { $('#foo').fadeOut(); }, 5000);

5000 はミリ秒単位の 5 秒です。

于 2008-10-30T18:18:10.963 に答える
43

私はちょうど書いたこの一時停止プラグインを使用します

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};

次のように呼び出します。

$("#mainImage").pause(5000).fadeOut();

注: コールバックは必要ありません。


編集: jQuery 1.4 を使用する必要があります。組み込みの delay()メソッド。確認していませんが、プラグインよりも「賢い」と思います。

于 2009-02-16T08:00:18.203 に答える
19

以前は、このようなことをしていました

$('#foo').animate({opacity: 1},1000).fadeOut('slow');

要素に既に不透明度 1 があるため、最初のアニメーションは何もしていませんが、しばらくの間一時停止します。

jQuery 1.4 では、これがフレームワークに組み込まれているため、上記のようなハックを使用する必要はありません。

$('#foo').delay(1000).fadeOut('slow');

jQuery.delay()機能は元のプラグインhttp://www.evanbot.com/article/jquery-delay-plugin/4と同じです

于 2010-01-15T02:54:12.670 に答える
11

最良の方法は、jQuery 遅延メソッドを使用することです。

$('#my_id').delay(2000).fadeOut(2000);

于 2010-04-15T18:02:26.100 に答える
1

(fadeTo()メソッドを使用し、それに5秒の遅延を設定することで、setTimeoutの使用を回避できます。

$("#hideAfterFiveSeconds").click(function(){
  $(this).fadeTo(5000,1,function(){
    $(this).fadeOut("slow");
  });
});
于 2009-01-18T00:32:26.410 に答える
1

チェーンに遅延を追加できるプラグインを作成しました。

例えば ​​$('#div').fadeOut().delay(5000).fadeIn(); // 要素をフェードアウトし、5 秒待ってから要素をフェードインします。

アニメーションのハックや過剰なコールバック チェーンは使用せず、単純でクリーンな短いコードのみを使用します。

http://blindsignals.com/index.php/2009/07/jquery-delay/

于 2009-07-09T05:21:03.547 に答える