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