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