что не так в этом коде? Я пытаюсь получить этот эффект: fadeOut(500)
и attr('class','myClass')
отложенный из-за 600 millisecs.. затем delay(600)
снова, и fadeIn(500)
. Задержки происходят правильно, но attr()
не откладывается, это стреляет когда #myDiv
все еще исчезает!:'(
$('#myDiv').fadeOut(500)
.delay(600)
.attr('class','myClass')
.delay(600)
.fadeIn(500);
.delay ()
влияет только на анимацию или очередь fx
(если вы специально не укажете другую очередь ). Имейте в виду, что цепочка и организация очереди - это две совершенно разные концепции, цепочка продолжает использование одного и того же набора jquery, но это совсем другое дело, чем любые очереди событий для элементов в этом наборе.
Чтобы задействовать вызов .attr ()
, вы должны добавить его в качестве обратного вызова в ту же очередь, используя .queue ()
, например:
$('#myDiv').fadeOut(500)
.delay(600)
.queue(function(next) { $(this).attr('class','myClass'); next(); })
.delay(600)
.fadeIn(500);
Также обратите внимание, что существуют методы .addClass ()
, .removeClass ()
и .toggleClass ()
, которые могут сделать это немного чище :)