jQuery动画检测是否动画?

它们是一种检测元素是动画还是检测元素值是否在变化的方法?

因为如果元素是动画的,我需要触发一个函数。 不是关于动画的完成。

当所选元素为动画时,以下内容返回true:

var isAnimating = $("#someid").is(':animated'); 

更多详情:

http://api.jquery.com/animated-selector/
和/或
http://api.jquery.com/animate/
step:在动画的每个步骤之后调用的函数。

一种简单的方法是添加一个全局布尔值,一旦动画开始,它就会设置为true 。 然后向动画添加一个回调函数,在完成时将其设置为false

 var running = false; $('#start').click(function(){ running = true; $('#target').animate({opacity: 0.5},'slow',function(){ running = false; }); }); 

编辑:哦,我想有一个选择器。

因为如果元素是动画的,我需要触发一个函数。 不是关于动画的完成。

由于$(element).on(":animated", function(){ ... }); 似乎不起作用,我能看到的唯一方法就是在执行动画时非常简单地执行你想要调用的函数:

 $(selector).animate( . . . ); functionToCall(); //called with animate above 

另一个解决方案是,你可以创建自己的库来处理开始动画,并且一旦它以我上面描述的简单方式开始动画,就会处理调用必要的函数。

所以只是一些伪代码:

 var animation = new MyAnimationLibrary(function() { $(selector).animate( ... ) }); animation.onStart.push(function() { alert('animation starts'); }); //then later in the code: animation.start(); 

然后只需在上面调用数组animation.onStart中的函数并触发动画即可。