Pembaruan: Pada jQuery 1.4 Anda dapat menggunakan .delay( n )
metode ini. http://api.jquery.com/delay/
$('.notice').fadeIn().delay(2000).fadeOut('slow');
Catatan : $.show()
dan $.hide()
secara default tidak diantrekan, jadi jika Anda ingin menggunakannya $.delay()
, Anda perlu mengkonfigurasinya seperti itu:
$('.notice')
.show({duration: 0, queue: true})
.delay(2000)
.hide({duration: 0, queue: true});
Anda mungkin dapat menggunakan sintaks Antrean, ini mungkin berfungsi:
jQuery(function($){
var e = $('.notice');
e.fadeIn();
e.queue(function(){
setTimeout(function(){
e.dequeue();
}, 2000 );
});
e.fadeOut('fast');
});
atau Anda bisa sangat cerdik dan membuat fungsi jQuery untuk melakukannya.
(function($){
jQuery.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
};
})(jQuery);
yang (secara teori, mengerjakan memori di sini) mengizinkan Anda melakukan ini:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Saya baru saja menemukannya di bawah ini:
Saya akan menyimpan postingan untuk pengguna lain!
sumber
Retasan hebat oleh @strager. Terapkan ke jQuery seperti ini:
Dan kemudian gunakan sebagai:
sumber
Anda bisa melakukan sesuatu seperti ini:
Sayangnya, Anda tidak bisa begitu saja melakukan .animate ({}, 2000) - Saya rasa ini adalah bug, dan akan melaporkannya.
sumber
Ben Alman menulis plugin manis untuk jQuery yang disebut doTimeout. Ini memiliki banyak fitur bagus!
Lihat di sini: jQuery doTimeout: Suka setTimeout, tetapi lebih baik .
sumber
Untuk bisa menggunakannya seperti itu, Anda harus kembali
this
. Tanpa pengembalian, fadeOut ('slow'), tidak akan mendapatkan objek untuk menjalankan operasi itu.Yaitu:
Lalu lakukan ini:
sumber
Ini dapat dilakukan hanya dengan beberapa baris jQuery:
lihat biola di bawah ini untuk contoh yang berfungsi ...
http://jsfiddle.net/eNxuJ/78/
sumber