我试图理解当我在jQuery上连续多次调用时它意味着什么,因为我没有得到我在类似情况下所期望的结果。
示例1:
$(this).animate({opacity: 0.25}, 250).animate({opacity: 1.0}, 250);
正如预期的那样,这会在返回完全不透明度之前快速闪现半透明效果。
示例2:
$(this).animate({opacity: 0.25}, 250).removeAttr("style");
在这种情况下,我不希望逐渐返回到不透明度,我希望removeAttr(“style”)能够在动画完成后跳回到不透明度。这是因为动画不透明度函数仅更改opacity
的值并设置display:block
,我希望通过删除这些样式,一切都恢复正常。
相反,似乎removeAttr在动画完成之前触发,清除样式,然后动画再设置不透明度,使项目保持半透明。
这是事件序列的事实似乎可以通过改变removeAttr以使用完成回调的事实来确认:
$(this).animate({opacity: 0.25}, 250, function(){$(this).removeAttr("style");});
为什么动画似乎是连续处理的,而至少有些功能是与动画并行处理的?
答案 0 :(得分:3)
这里有两个不同的队列。
当您致电animate
时,会将其推送到名为fx
的效果队列中。大多数其他东西不使用队列。这就是为什么这两个电话似乎同时发生的原因。
答案 1 :(得分:2)
您可以将animate
视为异步。
如果想要在动画结束后发生某些事情,那么你应该使用回调函数。