如何在动画速度期间禁用按钮?

how to disable button during animation speed?

 var slideContainer = ('#slider');  
 var width = 720;

 function slide () {  
   if ( parseInt( $slideContainer.css('marginLeft') ) >= -2160 ) {
       $slideContainer.animate({'margin-left': '-='+width},200);
   }
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
</script>

<a class='button' onclick='slide()'></a>

我只想在动画持续期间禁用按钮(动画速度 = 200 毫秒)

在动画之前禁用并使用animate()完成回调再次启用

 function slide () {  
   if ( parseInt( $slideContainer.css('marginLeft') ) >= -2160 ) {
       $('.button').addClass('disabled')
       $slideContainer.animate({'margin-left': '-='+width},200, function(){
           $('.button').removeClass('disabled')
       });
   }
 }

我的解决方案包括添加 class disabled 来更改 css 规则,并防止使用 JavaScript preventDefault() 方法的默认行为。此外,将在动画结束时调用附加参数 callback 函数。在这种情况下,回调函数将删除 disabled class.

var slideContainer = $('#slider');  
var width = 720;

function slide(event) {
  if(!slideContainer.hasClass('disabled')) {
    slideContainer.addClass('disabled');
    slideContainer.animate({'margin-left': '-='+width}, 200, function(){
      slideContainer.removeClass('disabled');
    });
  }
  else {
    event.preventDefault();
  }
}
.disabled {
 color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="slider" class='button' onclick='slide()'>Test</a>