使用jquery多次单击时禁用单击按钮

时间:2016-10-05 06:39:56

标签: javascript jquery click

点按一下按钮,首先点击,然后点击第二次。所以当点击多次动画时粉碎了。

有没有办法在动画期间禁用点击,只有在动画完成时启用?

请参阅下面的代码,其中prop disbled无法正常工作

jQuery('.start_button').click(function(event){
    jQuery(this).find('button').prop('disabled', true);
    if(clickcount === 0){
        jQuery(this).find('button').prop('disabled', true);
        wheelForuneAnim.startAnimation();
        jQuery(this).find('button').prop('disabled', false);
        clickcount = 1;
    } 
    else if(clickcount === 1){
        jQuery(this).find('button').prop('disabled', true);
        wheelForuneAnim.stopFull();
        setTimeout(function(){
            wheelForuneAnim.stopAnimation();
        }, 700);
        clickcount = 0;

    }; 
});

这是标记

<div class="start_button">
      <button type="button"></button>  
</div>

方法

startAnimation = function () {
        interval = setInterval(this.animation, 250);
    };
animation = function () {
        if((wheelelement % elems.length)==0){ wheelelement = 0 ;}
        elems.removeClass('active_wheel');
        jQuery('.game_wheel_item:eq('+wheelelement+')').addClass('active_wheel');
        wheelelement++;
    };

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

不需要那么多代码,下面的代码可以解决你的问题

jQuery('.start_button').on('click','button',function(event){
    jQuery(this).off('click','button');

       wheelForuneAnim.startAnimation(function()
       {
            // do your second if stuff
           setTimeout(function(){
                 wheelForuneAnim.stopAnimation(function()
                 {
                       // after function finished executing do some stuff here
                 });
                 jQuery(this).on('click','button');
            }, 700); 
       });
});

您的方法

startAnimation = function (cbck) {
        interval = setInterval(this.animation, 250);
        if(cbck)
        {
           cbck();
        }
    };
stopanimation = function (cbck) {
        if((wheelelement % elems.length)==0){ wheelelement = 0 ;}
        elems.removeClass('active_wheel');
        jQuery('.game_wheel_item:eq('+wheelelement+')').addClass('active_wheel');
        wheelelement++;

       if(cbck)
           cbck();
    };

答案 1 :(得分:0)

您可以随时尝试这样做:

jQuery('.start_button button').click(function(event) { //This gets the button in the div

  var button = jQuery(this);

  if (buttonText(button.text()) === "Start") {
    wheelForuneAnim.startAnimation();
    button.text('Stop')
  } else {
    wheelForuneAnim.stopFull();
    setTimeout(function() {
      wheelForuneAnim.stopAnimation();
      button.text('Start')
    }, 700);
  }
})

function buttonText(text) {
  if (text === "Start") {
    return "Start"
  } else {
    return "Stop"
  }
}

这不会禁用您的按钮,但我认为它可以帮助您防止动画中断。