delay()和fadeOut()不会延迟队列中的attr()
这段代码有什么问题? 我试图得到这样的效果: 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
队列(除非您专门指定其他队列)。 请记住,链接和排队是两个截然不同的概念,链接继续使用相同的jquery集,但这完全不同于该集合中元素的任何事件队列。
要使.attr()
调用受到影响,您必须使用.queue()
将其作为回调添加到同一队列,如下所示:
$('#myDiv').fadeOut(500) .delay(600) .queue(function(next) { $(this).attr('class','myClass'); next(); }) .delay(600) .fadeIn(500);
另请注意,有.addClass()
和.toggleClass()
方法可用,可以使这个更清洁:)