Обновление: С 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');
Я просто понял его ниже:
$(".notice")
.fadeIn( function()
{
setTimeout( function()
{
$(".notice").fadeOut("fast");
}, 2000);
});
я останусь на посту для других пользователей!
Можно сделать что-то вроде этого:
$('.notice')
.fadeIn()
.animate({opacity: '+=0'}, 2000) // Does nothing for 2000ms
.fadeOut('fast');
К сожалению, Вы не можете только сделать .animate ({}, 2000) - я думаю, что это - ошибка и сообщит о нем.
Чтобы использовать его таким образом, вам нужно вернуть 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 под названием doTimeout. В нем много приятных функций!
Посмотрите здесь: jQuery doTimeout: как setTimeout, но лучше .