回答:
更新: 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');
Ben AlmanがdoTimeoutと呼ばれるjQuery用の甘いプラグインを作成しました。素敵な機能がたくさんあります!
ここでそれをチェックアウト:jQueryのdoTimeout:同様のsetTimeout、より良いです。
そのように使用できるようにするには、戻る必要があります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');
これは、ほんの数行の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);
});
実際の例については、以下のフィドルを参照してください...