Javascript 停止多个动画,直到另一个动画完成

Javascript 停止多个动画,直到另一个动画完成,javascript,jquery,html,css,Javascript,Jquery,Html,Css,在多次单击按钮的同时停止多个动画,直到在以下代码的帮助下完成动画。 声明一个全局变量 var animateFinish = true; 这里我从点击动作开始 $('#button').on('click', function(e){ if(animateFinish){ animateFinish = false; $('.selector').animate({'margin-left':'100px'},"fast",'linear',func

在多次单击按钮的同时停止多个动画,直到在以下代码的帮助下完成动画。
声明一个全局变量

var animateFinish = true;  
这里我从点击动作开始

$('#button').on('click', function(e){
    if(animateFinish){
        animateFinish = false;
        $('.selector').animate({'margin-left':'100px'},"fast",'linear',function(){  
             animateFinish = true;
        }
    }  
}
一,。全局声明变量为True(animateFinish)。
2.第一次满足条件。
3.它立即被修改为false。
4.完成动画后,它将被还原。
5.现在,如果您选中它,直到动画完成,事件将不会设置动画。

对不起,我的英语不好。

就我个人而言,在您的情况下,我可能会使用一个全局变量
var busy=false
,然后在您单击时添加此变量:
if(busy)return;else busy=true。在动画结束时,将
busy
设置为
false
。这将阻止你的点击做任何事情,直到一切都完成

下面是一个简短的片段,说明了我的意思:

/*我在这里使用每个,因此“busy”仅单独应用于每个div。
*这样,每个元素都有自己的“忙”*/
$(“div”)。每个(函数(){
var busy=false;
$(此)。单击(函数(){
/*如果“忙”处于活动状态,则中止单击操作*/
if(busy)返回;else busy=true;
/*运行动画并在回调时停用“忙”*/
$(this).animate({left:500},2000).animate({left:0},2000,function()){
忙=假;
});
});
});
div{
位置:绝对位置;
左:0;
排名:0;
背景:红色;
宽度:100px;
高度:100px;
}


点击我上面的代码对我的Logic运行良好,我实际上认为您应该尝试
停止()
任何正在进行的动画,而不是延迟其他动画
stop()
将摆脱正在进行的动画,从那里开始。如果要链接动画,则不需要animateFinish,因为您有一个回调。您可以创建一个QUE函数,看看在每次动画回调之后是否还有一个函数需要执行。签出
queue()
:queue()没有按照我的要求工作此代码足够好。但我的场景是这样的,我有一个包含23个面板/框的内容滑块(不是固定的,在我的例子中是动态的)。如果用户单击“下一步”按钮,则必须将1面板框按其宽度向左移动。问题是,如果用户继续单击“下一步”按钮,动画效果会有所不同,因此我必须让用户等待动画完成。因此,我实现了如上所述。@Ranjithredykeesari如果您将
busy
移动到
每个
的外部,它将是全局的,并且对您的每个框都有效,如果这有意义的话。对不起,就我对您问题的理解而言,这是最好的解决方案:)