задержать эффекты JQuery - PullRequest
       42

задержать эффекты JQuery

48 голосов
/ 30 октября 2008

Я хочу, чтобы элемент и все его дочерние элементы исчезали после задержки в несколько секунд. но я не нашел способа указать, что эффект должен начинаться после указанной временной задержки.

Ответы [ 6 ]

77 голосов
/ 30 октября 2008
setTimeout(function() { $('#foo').fadeOut(); }, 5000);

5000 - это пять секунд в миллисекундах.

43 голосов
/ 16 февраля 2009

Я использую этот плагин паузы, который я только что написал

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};

Назовите это так:

$("#mainImage").pause(5000).fadeOut();

Примечание: обратный вызов не требуется.


Редактировать: теперь вы должны использовать jQuery 1.4. встроенный метод delay () . Я не проверял, но я предполагаю, что он более «умный», чем мой плагин.

19 голосов
/ 15 января 2010

Раньше вы делали что-то подобное

$('#foo').animate({opacity: 1},1000).fadeOut('slow');

Первая анимация ничего не делает, так как у вас уже есть непрозрачность 1 на элементе, но она остановится на некоторое время.

В jQuery 1.4 они встроили это в фреймворк, поэтому вам не нужно использовать хак, как описано выше.

$('#foo').delay(1000).fadeOut('slow');

Функциональность такая же, как у оригинального jQuery.delay() плагина http://www.evanbot.com/article/jquery-delay-plugin/4

11 голосов
/ 15 апреля 2010

Лучший способ - использовать метод задержки jQuery:

.

$ ( '# my_id') задержка (2000) .fadeOut (2000);

1 голос
/ 09 июля 2009

Я написал плагин, который позволит вам добавить задержку в цепочку.

например $ ('# div'). FadeOut (). Delay (5000) .fadeIn (); // исчезновение элемента, ожидание 5 секунд, исчезновение элемента обратно.

Он не использует анимацию хаков или чрезмерную цепочку обратных вызовов, просто простой чистый короткий код.

http://blindsignals.com/index.php/2009/07/jquery-delay/

1 голос
/ 18 января 2009

Вы можете избежать использования setTimeout, используя метод fadeTo () и установив для него 5-секундную задержку.

$("#hideAfterFiveSeconds").click(function(){
  $(this).fadeTo(5000,1,function(){
    $(this).fadeOut("slow");
  });
});
...