Тайм-аут эффекты jQuery

100
задан Peter O. 7 December 2012 в 23:20
поделиться

5 ответов

Обновление: С 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'); 
196
ответ дан Mchl 24 November 2019 в 04:49
поделиться

Я просто понял его ниже:

$(".notice")
   .fadeIn( function() 
   {
      setTimeout( function()
      {
         $(".notice").fadeOut("fast");
      }, 2000);
   });

я останусь на посту для других пользователей!

23
ответ дан Peter Mortensen 24 November 2019 в 04:49
поделиться

Можно сделать что-то вроде этого:

$('.notice')
    .fadeIn()
    .animate({opacity: '+=0'}, 2000)   // Does nothing for 2000ms
    .fadeOut('fast');

К сожалению, Вы не можете только сделать .animate ({}, 2000) - я думаю, что это - ошибка и сообщит о нем.

11
ответ дан strager 24 November 2019 в 04:49
поделиться

Чтобы использовать его таким образом, вам нужно вернуть 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');
5
ответ дан 24 November 2019 в 04:49
поделиться

Бен Алман написал замечательный плагин для jQuery под названием doTimeout. В нем много приятных функций!

Посмотрите здесь: jQuery doTimeout: как setTimeout, но лучше .

7
ответ дан 24 November 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: