Como remover todos os manipuladores de evento Click em jQuery
-
05-07-2019 - |
Pergunta
Eu estou tendo um problema. Basicamente, quando um usuário clica em link de um 'Editar' em uma página, as seguintes Jquery código é executado:
$("#saveBtn").click(function () {
saveQuestion(id);
});
Ao fazer isso, o evento onClick do botão Salvar chama o método saveQuestion()
e passa sobre o ID da questão para a qual o link 'Editar' foi clicado.
Mas, se na mesma sessão o usuário clica editar em 2 perguntas, então em vez de substituir o manipulador de eventos click
anterior, em vez provoca 2 manipuladores de eventos para executar, uma que poderia chamar saveQuestion(1)
eo outro saveQuestion(2)
chamada força. Ao fazer isso uma questão substitui a outra.
Existe uma maneira de remover todos os eventos click
anteriores que foram atribuídos a um botão?
Solução
Você usaria off () para remover um evento assim:
$("#saveBtn").off("click");
mas isso irá remover todos os eventos de clique vinculado a este elemento. Se a função com SaveQuestion é o único evento ligado, o texto acima irá fazê-lo. Se não faça o seguinte:
$("#saveBtn").off("click").click(function() { saveQuestion(id); });
Outras dicas
Existe uma maneira de remover todos os eventos de clique anteriores que foram atribuídos a um botão?
$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
Se você usou ...
$(function(){
function myFunc() {
// ... do something ...
};
$('#saveBtn').click(myFunc);
});
... então será mais fácil depois unbind.