现代jQuery动画中的setInterval()和setTimeout()是不是很糟糕?

我用jQuery 1.6的动画遇到了一些问题。 我用jQuery 1.5解决了它。

在我的项目中,我使用setInterval()来制作自定义徽标滑块。 动画一两个即时(不是同时)启动。 当我在页面上时,一切顺利,但是当我进入其他标签并且回归(分钟,两个左右)到我的页面项目时,一切都变得疯狂……

好的,所以我得到了一个使用Queue()答案。 我可以用这种方法实现同样的目的吗?

我已经预订了Manning jQuery in Action,并且没有任何关于使用Queue()立即启动动画的内容。

链接到Jsfiddle

引用一些答案:

由于requestAnimationFrame()的性质,您不应该使用setInterval或setTimeout循环对动画进行排队。

通常, setInterval == BADsetTimeout == 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事件。