【发布时间】:2012-12-22 12:07:39
【问题描述】:
我知道:animated 选择器,但目前我遇到了(可能是少数几个)旧 IE 的性能问题(看图)。我觉得这可能是我正在测试 ANY 页面动画的方式。
目前我正在循环一个区间,核心测试是 $('*').is(':animated')。这 $('*') 是我担心的......但由于我不知道在我的插件下面动画的 divs / etc 是什么,我不知道还有什么去做吧!
var testAnimationInterval = setInterval(function () {
if ( ! $('*').is(':animated') ) { // all done animating
clearInterval(testAnimationInterval);
animationsFinished(); // callback function
}
}, 300);
function animationsFinished() {
// do whatever
}
有没有人找到更好/不同的方法?尤其是在性能方面?
【问题讨论】:
-
我不知道,这很难捕捉到所有东西。特别是因为很多库/插件在
<body>上附加了一些东西,所以你可能需要一个非常通用的选择器,如*。您是否有任何方法知道页面上可能发生动画的特定区域?还是你不知道? -
我可能会得到一般的 div 区域,那仍然能够检测到其中发生的任何/所有动画吗?
-
每 300 毫秒执行一次
$("*")将对任何浏览器的性能产生重大影响。如果您负责设置动画效果,请自行跟踪。 -
@mcpDESIGNS 是的,你会检查类似
$("#general_div_area").find(":animated").length或$("#general_div_area").find("*").is(":animated")的内容 -
@Cerbrus jsperf.com/animated-jquery - 全部 3 种方式,正面交锋。
标签: javascript jquery animation jquery-animate