仅在尚未运行jQuery UI的情况下运行动画

run animation only if not already running jQuery UI

本文关键字:运行 情况下 动画 UI jQuery      更新时间:2023-09-26

我在像这样的点击事件上使用jQuery UI的反弹效果

$("#myelm").click(function(){
    $(".wlbutton").children("span.new").effect( "bounce", "slow");
});

我只想在它还没有运行的情况下运行效果。因此,如果你快速点击两次,它只会在第一次点击时起作用。我怎样才能做到这一点?

我尝试过用jQuery的.stop()清除队列,但没有成功。

您可以使用.not对其进行过滤:

$('#myelm').click(function(){
   $('.wlbutton').children('span.new').not(':animated').effect('bounce', 'slow');
});

但是,由于代码可读性,我会使用.is函数而不是过滤器进行检查。

使用:animated选择器检查特定元素是否为animating。如果当前正在设置动画,则忽略该click事件。

试试,

$("#myelm").click(function(){
    var xEle = $(".wlbutton").children("span.new");
    if(xEle.is(':animated')) { return; }
    xEle.effect( "bounce", "slow");
});

另一种方法是使用CCD_ 6。

$("#myelm").click(function(){
    $(".wlbutton").children("span.new").stop().effect( "bounce", "slow");
});

演示