我试图理解当我把多个调用放在jQuery上时,它意味着什么,因为我没有得到我期望的类似情况下的结果。jQuery函数队列混淆
例1:
$(this).animate({opacity: 0.25}, 250).animate({opacity: 1.0}, 250);
正如预期的那样,这给了半透明的快闪返回到完全不透明了。
例2:
$(this).animate({opacity: 0.25}, 250).removeAttr("style");
在这种情况下,而不是逐渐恢复到不透明,我预计removeAttr(“风格”),以使其跳回不透明度动画完成后。这是因为动画不透明度函数仅仅更改了opacity
的值并设置了display:block
,我期望通过删除这些样式,一切都恢复正常。
相反,它看起来像removeAttr在动画完成前触发,清除样式,然后动画设置更多的不透明度,使项目保持半透明。
事实上,这是事件发生的顺序似乎的事实,改变removeAttr使用完成回调确认工作正常:
$(this).animate({opacity: 0.25}, 250, function(){$(this).removeAttr("style");});
为什么是它的动画似乎要处理串行,而至少有一些功能与动画并行处理?
+1,但大多数其他函数(如removeAttr())甚至不使用队列,而是立即应用它们的效果。 – 2011-04-20 00:29:06
@ Box9:我只是想编辑我的答案:),在与jsFiddle玩了一段时间之后:http://jsfiddle.net/QVXEC/ – 2011-04-20 00:31:24
通过在调用'animate'时将'queue'更改为'false' ,它应该立即执行而不等待'fx'队列上的其他功能。它的确如此,但它并不完全同步执行,因为人们会相信,因为'removeAttr'也会立即触发。 – 2011-04-20 00:32:49