如果没有准备好,请阻止javascript执行click事件

时间:2013-11-27 12:46:53

标签: javascript html click jquery

previous.click(function(){
  if ((parseInt($('.slider-box').css('margin-left'))) < 0) {
    $('.slider-box').animate({'margin-left':'+='+rubrikWidth});
  }
}); 

此代码执行滑块向右移动,如果单击按钮并且左边距为&lt; 0。 但是当您经常快速点击时,if子句计算为慢,然后可以将滑块移动到远处。 我想防止点击按钮太快。 有办法吗? 点击 - &gt;执行事件 - &gt;执行完毕后,您可以再次点击。

2 个答案:

答案 0 :(得分:1)

您只需使用animate回调即可。这应该这样做,假设.slider-box只匹配一个元素:

previous.click(function(){
  var slider = $('.slider-box');
  if (!slider.data('busy') && (parseInt(slider.css('margin-left'))) < 0) {
    slider.data('busy', true).animate({'margin-left':'+='+rubrikWidth}, function() {
        slider.data('busy', false);
    });
  }
});

答案 1 :(得分:0)

您可以通过检查来检查动画是否正在运行:

$('.slider-box').queue('fx').length

如果队列的长度大于零,则使用preventDefault