101

要素をフェードインさせようとしていますが、5000ミリ秒で再びフェードアウトします。私は次のようなことができることを知っています:

setTimeout(function () { $(".notice").fadeOut(); }, 5000);

しかし、それはフェードアウトを制御するだけです、私はコールバックに上記を追加しますか?

4

7 に答える 7

197

更新: jQuery 1.4 以降、このメソッドを使用できます.delay( n )http://api.jquery.com/delay/

$('.notice').fadeIn().delay(2000).fadeOut('slow'); 

:デフォルトでは$.show()およびはキューに登録されていないため、それらを使用する場合は、そのように構成する必要があります。$.hide()$.delay()

$('.notice')
    .show({duration: 0, queue: true})
    .delay(2000)
    .hide({duration: 0, queue: true});

Queue 構文を使用できる可能性があります。これは機能する可能性があります。

jQuery(function($){ 

var e = $('.notice'); 
e.fadeIn(); 
e.queue(function(){ 
  setTimeout(function(){ 
    e.dequeue(); 
  }, 2000 ); 
}); 
e.fadeOut('fast'); 

}); 

または、本当に独創的で、それを行うための jQuery 関数を作成することもできます。

(function($){ 

  jQuery.fn.idle = function(time)
  { 
      var o = $(this); 
      o.queue(function()
      { 
         setTimeout(function()
         { 
            o.dequeue(); 
         }, time);
      });
  };
})(jQuery);

(理論的には、ここでメモリに取り組んでいます)これを行うことができます:

$('.notice').fadeIn().idle(2000).fadeOut('slow'); 
于 2008-11-25T06:34:53.173 に答える
23

私はそれを以下で理解しました:

$(".notice")
   .fadeIn( function() 
   {
      setTimeout( function()
      {
         $(".notice").fadeOut("fast");
      }, 2000);
   });

他のユーザーのために投稿を続けます!

于 2008-11-25T03:26:20.543 に答える
14

@strager による素晴らしいハック。次のように jQuery に実装します。

jQuery.fn.wait = function (MiliSeconds) {
    $(this).animate({ opacity: '+=0' }, MiliSeconds);
    return this;
}

そして、次のように使用します。

$('.notice').fadeIn().wait(2000).fadeOut('slow');
于 2010-12-03T18:00:52.373 に答える
11

あなたはこのようなことをすることができます:

$('.notice')
    .fadeIn()
    .animate({opacity: '+=0'}, 2000)   // Does nothing for 2000ms
    .fadeOut('fast');

残念ながら、.animate({}、2000)だけを実行することはできません。これはバグだと思います。報告します。

于 2008-11-25T03:36:48.120 に答える
7

Ben Alman は、doTimeout という jQuery 用の便利なプラグインを作成しました。うれしい機能がいっぱい!

ここで確認してください: jQuery doTimeout: setTimeout と同様ですが、より優れています

于 2010-02-13T15:49:34.320 に答える
5

そのように使用できるようにするには、返す必要がありますthis。リターンがなければ、fadeOut('slow') はその操作を実行するオブジェクトを取得しません。

すなわち:

  $.fn.idle = function(time)
  {
      var o = $(this);
      o.queue(function()
      {
         setTimeout(function()
         {
            o.dequeue();
         }, time);
      });
      return this;              //****
  }

次に、これを行います:

$('.notice').fadeIn().idle(2000).fadeOut('slow');
于 2009-07-10T16:17:20.747 に答える
1

これは、数行の jQuery だけで実行できます。

$(function(){
    // make sure img is hidden - fade in
    $('img').hide().fadeIn(2000);

    // after 5 second timeout - fade out
    setTimeout(function(){$('img').fadeOut(2000);}, 5000);
});​

実際の例については、以下のフィドルを参照してください...

http://jsfiddle.net/eNxuJ/78/

于 2012-05-31T16:58:44.280 に答える