我在jQuery 1.6的动画中遇到了一些问题。我用jQuery 1.5解决了它。
在我的项目中,我使用setInterval()
制作自定义徽标滑块。动画一两个即时(不是同时)激发。当我在页面上时,一切顺利,但是当我继续其他标签并且回归(在一分钟之后,两个左右)到我的页面项目时,一切都变得疯狂......
好的,所以我得到了一个使用Queue()
的答案。我可以用这种方法实现同样的目的吗?
我已经预订了Manning jQuery in Action,并且没有任何关于使用Queue()
立即激发动画的内容。
引用一些答案:
由于requestAnimationFrame()的性质,您不应该使用setInterval或setTimeout循环对动画进行排队。
答案 0 :(得分:12)
动画的一般 setInterval == BAD 和 setTimeout == GOOD 。
setInterval 会尝试播放追赶,因为 nnnnnn 声明:
某些浏览器可能会对所有内容进行排队,然后尝试赶上 标签再次获得焦点
循环animate()的最佳方法是通过递归调用,例如:
var myTimeout;
var myAnimation = function () {
$('#myID').animate({
[propertyKey]:[propertyValue]
}, 5000, function() {
myTimeout = setTimeOut(myAnimation, 1000);
});
}
请注意 myTimeout 如何超出 myAnnimation 的范围,以便能够停止动画
clearTimeout(myTimeout);
您可以连接到 window.unload 事件。