2010-11-04 45 views
0

场景:您可以单击某个按钮,并且某些内容将左移(.animate)。 当你点击按钮约3次,然后JQuery问题3。左边的动画顺序。如何防止JQuery发生排队(链接)

我不要那个!我会阻止排队,这样按钮才会在动画完成时起作用。 谢谢各位!

伪代码:

IF#内容没有设置动画(静止)

THEN在点击按钮

动画Contet CSS “左” + 900px

否则您现在无法单击该按钮。但是,如果你点击了butto,那么它就不会再播放另一个动画。

回答

4

您可以使用the :animated selector根据元素的动画状态运行代码。

if($('#Content').is(':not(:animated)')) { 
    // run your animation 
} 

这也采用the :not() selector,并the .is() method返回一个布尔值。

或者,您可以在动画开始时向按钮添加一个类,并将该类用作标志来确定动画是否应该运行。

该类还可以设置按钮的样式,以提供不应该再次单击的反馈。

$('#myButton').click(function() { 
    $button = $(this); 
    if(!$button.hasClass('disabled')) { 
     $button.addClass('disabled'); 
     $('#Content').animate({left: '+=900'}, function() { $button.removeClass('disabled') }); 
    } 
}); 
+0

谢谢你们所有的回应。你的第二个代码对我来说工作得很好。谢谢。 – Tomkay 2010-11-04 13:18:24

+0

@user - 不客气。 :o) – user113716 2010-11-04 13:28:38

+0

以前从未见过。谢谢你教我新东西! – 2010-11-06 12:57:24

2

您可以随时按unbindclick事件。然后将回调传递给animate,动画完成后将重新绑定click