如何检测所有动画何时停止?

时间:2014-11-13 15:19:05

标签: javascript jquery jquery-animate

我正在使用此代码停止同时动画2个元素:

$('#container').find('*').stop(true, true);

最终用户将鼠标悬停在按钮上可以停止动画,在这种情况下,动画在完成后停止(这就是我想要的)。但是,按钮悬停还会启动另一个功能(删除并重新加载元素),如果该功能在动画完成之前运行则会发生冲突。

我认为在上面的代码中使用'after'或'complete'可能会有效,但我无法弄清楚语法是什么。

1 个答案:

答案 0 :(得分:0)

我不确定您要实现的目标,但为了使用jQuery检查对象上是否有正在运行/待处理的动画,您可以使用 .promise().done()

例如,这种情况:

var animations_running;

$('#container').promise().done(function() {
    animations_running=false;
});

$('#container').on("mouseover",".SomethingInside",function(){
    if(animations_running==false){
        //...do animations...
        animations_running=true;
    }
});

您还可以为jQuery动画添加回调函数,如下所示:

$('#container').on("mouseover",".SomethingInside",function(){
    if(animations_running==false){
        $(this).animate({
            left:+=50
        },500,function(){
            //...this is the callback function...
        });
        animations_running=true;
    }
});