Обновление: с 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 следующим образом:
А затем используйте его как:
источник
Вы можете сделать что-то вроде этого:
К сожалению, вы не можете просто использовать .animate ({}, 2000) - я думаю, что это ошибка, и сообщу о ней.
источник
Бен Алман написал замечательный плагин для jQuery под названием doTimeout. В нем много приятных функций!
Проверьте это здесь: jQuery doTimeout: как setTimeout, но лучше .
источник
Чтобы можно было так использовать, нужно вернуть
this
. Без возврата fadeOut ('slow') не получит объект для выполнения этой операции.Т.е.:
Затем сделайте это:
источник
Это можно сделать с помощью всего нескольких строк jQuery:
см. скрипт ниже для рабочего примера ...
http://jsfiddle.net/eNxuJ/78/
источник