Câu trả lời:
Cập nhật: Kể từ jQuery 1.4, bạn có thể sử dụng .delay( n )
phương pháp này. http://api.jquery.com/delay/
$('.notice').fadeIn().delay(2000).fadeOut('slow');
Lưu ý : $.show()
và $.hide()
theo mặc định không được xếp hàng đợi, vì vậy nếu bạn muốn sử dụng $.delay()
với chúng, bạn cần định cấu hình chúng theo cách:
$('.notice')
.show({duration: 0, queue: true})
.delay(2000)
.hide({duration: 0, queue: true});
Bạn có thể sử dụng cú pháp Hàng đợi, điều này có thể hoạt động:
jQuery(function($){
var e = $('.notice');
e.fadeIn();
e.queue(function(){
setTimeout(function(){
e.dequeue();
}, 2000 );
});
e.fadeOut('fast');
});
hoặc bạn có thể thực sự khéo léo và tạo một hàm jQuery để làm điều đó.
(function($){
jQuery.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
};
})(jQuery);
mà (về lý thuyết, hoạt động trên bộ nhớ ở đây) cho phép bạn làm điều này:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Hack tuyệt vời bởi @strager. Triển khai nó vào jQuery như thế này:
jQuery.fn.wait = function (MiliSeconds) {
$(this).animate({ opacity: '+=0' }, MiliSeconds);
return this;
}
Và sau đó sử dụng nó như:
$('.notice').fadeIn().wait(2000).fadeOut('slow');
Bạn có thể làm điều gì đó như sau:
$('.notice')
.fadeIn()
.animate({opacity: '+=0'}, 2000) // Does nothing for 2000ms
.fadeOut('fast');
Đáng buồn thay, bạn không thể chỉ làm .animate ({}, 2000) - Tôi nghĩ đây là một lỗi và sẽ báo cáo nó.
Ben Alman đã viết một plugin ngọt ngào cho jQuery có tên là doTimeout. Nó có rất nhiều tính năng hay!
Hãy xem tại đây: jQuery doTimeout: Giống như setTimeout, nhưng tốt hơn .
Để có thể sử dụng nó như vậy, bạn cần trở lại this
. Nếu không có trả về, fadeOut ('chậm'), sẽ không nhận được một đối tượng để thực hiện thao tác đó.
I E:
$.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
return this; //****
}
Sau đó làm điều này:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Điều này có thể được thực hiện chỉ với một vài dòng 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);
});
xem fiddle bên dưới để biết ví dụ hoạt động ...