Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Использовать jquery off и on