Как удалить все обработчики событий Click в Jquery

у меня проблема. В принципе, когда пользователь нажимает ссылку "Изменить" на странице, выполняется следующий код Jquery:

$("#saveBtn").click(function () {
    saveQuestion(id);
});

делая это, событие onClick кнопки Сохранить вызывает saveQuestion() метод и передает идентификатор вопроса, для которого была нажата ссылка "редактировать".

но если в том же сеансе пользователь нажимает edit на 2 вопроса, то вместо перезаписи предыдущего click обработчик событий, он вместо этого вызывает запуск 2 обработчиков событий, один что может вызвать saveQuestion(1) а другой может позвонить saveQuestion(2). Делая это, 1 вопрос перезаписывает другой.

есть ли способ удалить все предыдущие click события, которые были назначены кнопке?

5 ответов


можно использовать off() чтобы удалить такое событие:

$("#saveBtn").off("click");

но это удалит все события click привязанные к этому элементу. Если функция с SaveQuestion является единственным связанным событием, то это будет сделано выше. Если нет, сделайте следующее:

$("#saveBtn").off("click").click(function() { saveQuestion(id); });

есть ли способ удалить все предыдущие события щелчка, которые были назначены кнопке?

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});

$('#saveBtn').off('click').click(function(){saveQuestion(id)});

Если вы использовали...

$(function(){
    function myFunc() {
        // ... do something ...
    };
    $('#saveBtn').click(myFunc);
});

... потом будет легче развязать.


$('#saveBtn').off('click').on('click',function(){
   saveQuestion(id)
});

используйте jQuery выкл и on