我在插件上使用jQuerys动画功能,在每个元素上模拟不同持续时间的许多元素。我想知道是否正在运行任何动画或者根本没有动画。所以我想出了这个:
if( $div1.is(':animated') || $div2.is(':animated') || $div3.is(':animated') ) return true;
else return false;
或者这个:
if( $div1.add($div2).add($div3).is(':animated') ) return true;
else return false;
哪个更好???
你知道其他任何方法吗?
我不想要这段代码$("*").is(':animated');
,因为它会检查所有动画和其他插件动画。
请记住,我有很多元素,而不仅仅是3。
感谢阅读...
答案 0 :(得分:7)
答案 1 :(得分:4)
也许你可以在想要检查动画的div上放一个课程?
if ($(".myclass").is(":animated")) return true;
答案 2 :(得分:1)
为了节省周期,我可能会保持明确。每次制作动画时,请增加numberOfTotalAnimations
。在动画回调结束时,减少它。那就是你真的需要速度。否则,我喜欢@Ben的课程提案。
更新,并根据请求提供示例:
var numberOfTotalAnimations = 0;
numberOfTotalAnimations++;
$('#thing').animate({
opacity: 0.1
}, 2000, function() {
numberOfTotalAnimations--;
});
if (!numberOfTotalAnimations) {
console.log("Everything's quiet.");
} else {
console.log("Something's moving.");
}
它不漂亮,容易出错(因为你可以忘记增加或减少计数器) - 但速度很快。