jQuery是多个元素的动画,哪个更好?

时间:2011-05-22 23:50:28

标签: jquery animation elements animated

我在插件上使用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。

感谢阅读...

3 个答案:

答案 0 :(得分:7)

我会选择第二个,因为阅读和思考它的代码较少。

通常,DRY更好。

你也可以重构......

return $div1.add($div2).add($div3).is(':animated');

答案 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.");
}

它不漂亮,容易出错(因为你可以忘记增加或减少计数器) - 但速度很快。