Как удалить все обработчики событий 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)});
Если вы использовали...
$(function(){
function myFunc() {
// ... do something ...
};
$('#saveBtn').click(myFunc);
});
... потом будет легче развязать.