Відповіді:
Оновлення: Станом на 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});
Можливо, ви можете використовувати синтаксис черги, це може працювати:
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');
Чудовий хак від @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) - Я думаю, що це помилка, і я повідомлять про це.
Бен Алман написав солодкий плагін для jQuery під назвою doTimeout. У ньому багато приємних особливостей!
Перевірте це: jQuery doTimeout: Як setTimeout, але краще .
Щоб мати можливість ним користуватися таким чином, вам потрібно повернутися this
. Без повернення fadeOut ('повільний') не отримає об'єкт для виконання цієї операції.
Тобто:
$.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);
});
див. загадку нижче для робочого прикладу ...