Задержка () и fadeout () Не задерживайтетритетрию () в очереди

StackOverflow https://stackoverflow.com/questions/2807127

  •  25-09-2019
  •  | 
  •  

Вопрос

Что не так в этом коде? Я пытаюсь получить этот эффект: fadeOut(500) а также attr('class','myClass') задерживается на 600 миллисец .. затем delay(600) Опять и fadeIn(500). Отказ Задержки происходят правильно, но attr() не задерживается, он пожаровал, когда #myDiv все еще исчезает! : '(

$('#myDiv').fadeOut(500)
           .delay(600)
           .attr('class','myClass')
           .delay(600)
           .fadeIn(500);  
Это было полезно?

Решение

То .delay() только влияет на анимацию или fx очередь (если вы не укажете другой очередь конкретно). Имейте в виду, что цепочка и очередь 2 явно разных концепций, цепочка продолжает использование одного и того же набора jQuery, но это другое, полностью, чем любые очереди событий на элементах в этом наборе.

Иметь .attr() Звоните затронуты, вы должны добавить его в качестве обратного вызова к той же очересению, используя .queue(), так:

$('#myDiv').fadeOut(500)
           .delay(600)
           .queue(function(next) { $(this).attr('class','myClass'); next(); })
           .delay(600)
           .fadeIn(500); 

Также отметить, что есть .addClass(), .removeClass() а также .toggleClass() Методы доступны, которые могут сделать это немного очистить :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top