要素をフェードインさせようとしていますが、5000ミリ秒で再びフェードアウトします。私は次のようなことができることを知っています:
setTimeout(function () { $(".notice").fadeOut(); }, 5000);
しかし、それはフェードアウトを制御するだけです、私はコールバックに上記を追加しますか?
更新: 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');
私はそれを以下で理解しました:
$(".notice")
.fadeIn( function()
{
setTimeout( function()
{
$(".notice").fadeOut("fast");
}, 2000);
});
他のユーザーのために投稿を続けます!
@strager による素晴らしいハック。次のように jQuery に実装します。
jQuery.fn.wait = function (MiliSeconds) {
$(this).animate({ opacity: '+=0' }, MiliSeconds);
return this;
}
そして、次のように使用します。
$('.notice').fadeIn().wait(2000).fadeOut('slow');
あなたはこのようなことをすることができます:
$('.notice')
.fadeIn()
.animate({opacity: '+=0'}, 2000) // Does nothing for 2000ms
.fadeOut('fast');
残念ながら、.animate({}、2000)だけを実行することはできません。これはバグだと思います。報告します。
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);
});
実際の例については、以下のフィドルを参照してください...