Как временно отключить обработчик кликов в jQuery? - PullRequest
62 голосов
/ 12 августа 2009

Скажем, у меня есть что-то вроде следующего, чтобы перехватить событие нажатия кнопки:

$("#button_id").click(function() {
  //disable click event
  //do something
  //re-enable click event
}

Как временно отключить событие нажатия кнопки, пока не закончится обработка исходного нажатия? Обычно я делаю исчезновение элемента div после нажатия кнопки, но если пользователь нажимает кнопку несколько раз быстро, он обрабатывает все эти нажатия до того, как элемент div сможет исчезнуть. Я хочу «отменить» кнопку, чтобы только первый щелчок регистрировался до исчезновения div.

Ответы [ 12 ]

0 голосов
/ 10 ноября 2013

Этот пример работы.


HTML код:

  <div class="wrapper">
     <div class="mask">Something</div> 
  </div>

JQuery:

    var fade = function(){
        $(".mask").fadeToggle(500,function(){
            $(this).parent().on("click",function(){
                $(this).off("click");
                fade();
            });
        });
    };

    $(".wrapper").on("click",function(){
        $(this).off("click");
        fade();     
    });
0 голосов
/ 13 октября 2013
$("#button_id").click(function() {
    $('#button_id').attr('disabled', 'true');
    $('#myDiv').hide(function() { $('#button_id').removeAttr('disabled'); });
}); 

Не используйте .attr() для отключения, используйте .prop(), лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...