Как удалить все обработчики событий Click в JQuery
У меня проблема. В основном, когда пользователь нажимает ссылку "Изменить" на странице, выполняется следующий код JQuery:
$("#saveBtn").click(function () {
saveQuestion(id);
});
Таким образом, событие onClick кнопки сохранения вызывает метод saveQuestion()
и передает идентификатор вопроса, для которого была нажата ссылка "Изменить".
Но если в тот же сеанс пользователь нажимает на редактирование по 2 вопросам, вместо этого вместо перезаписывания предыдущего обработчика событий click
вместо этого он запускает 2 обработчика событий, один из которых может вызвать saveQuestion(1)
, а другой может вызвать saveQuestion(2)
. Делая это, один вопрос перезаписывает другой.
Есть ли способ удалить все предыдущие события click
, которые были назначены кнопке?
Ответы
Ответ 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