Задержка jQuery не работает - PullRequest
62 голосов
/ 28 декабря 2010
$('.transparent').removeClass('transparent').delay(2000).addClass('not_transparent').delay(4000)

У меня есть div, который является полупрозрачным, и затем хочу переключить его на непрозрачный.Но jQuery .delay ();Метод, похоже, не работает здесь.Я пробовал .fadeIn ();вместо этого, и это работает с задержкой, но не работает с изменяющимися классами.

Ответы [ 3 ]

132 голосов
/ 28 декабря 2010

.delay() используется для элементов, которые являются частью queue, например анимации.Простой addClass не ставится в очередь.

Вы можете использовать setTimeout.

var trans = $('.transparent').removeClass('transparent');
setTimeout(function() {
    trans.addClass('not_transparent');
}, 2000);

В качестве альтернативы, вы можете добавить элемент без очереди в очередь, используя .queue(), хотя я думаю, что setTimeout будет лучше.

$('.transparent').removeClass('transparent').delay(2000).queue(function(nxt) {
      $(this).addClass('not_transparent');
      nxt();
});
6 голосов
/ 08 сентября 2015

Я знаю, что это старый вопрос, но по-прежнему много трафика приходит от Google, поэтому я добавлю свои два цента;

Вы можете использовать что-то вроде -

$('.transparent').fadeIn().delay(500).queue(function(){
  $('.transparent').addClass('yourclass');
});

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

0 голосов
/ 10 августа 2014

.delay() не работает с тегом .addClass() вне функции, поэтому просто используйте:

delay();
function delay(){
     $('.pgtitle').delay(5000).fadeIn(0).addClass('animated bounceInDown');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...