Come rimuovere tutti i gestori di eventi Click in Jquery
-
05-07-2019 - |
Domanda
Sto riscontrando un problema. Fondamentalmente, quando un utente fa clic su un link "Modifica" su una pagina, viene eseguito il seguente codice Jquery:
$("#saveBtn").click(function () {
saveQuestion(id);
});
In questo modo, l'evento onClick del pulsante Salva chiama il metodo saveQuestion ()
e passa l'ID della domanda per la quale è stato fatto clic sul collegamento "Modifica".
Ma se nella stessa sessione l'utente fa clic su Modifica su 2 domande, quindi invece di sovrascrivere il precedente gestore di eventi clic
, provoca invece l'esecuzione di 2 gestori di eventi, uno che potrebbe chiamare saveQuestion (1)
e l'altro potrebbe chiamare saveQuestion (2)
. In questo modo 1 domanda sovrascrive l'altra.
Esiste un modo per rimuovere tutti gli eventi click
precedenti che sono stati assegnati a un pulsante?
Soluzione
Dovresti utilizzare off () per rimuovere un evento in questo modo:
$("#saveBtn").off("click");
ma questo rimuoverà tutti gli eventi clic associati a questo elemento. Se la funzione con SaveQuestion è l'unico evento associato, lo farà sopra. In caso contrario, procedi come segue:
$("#saveBtn").off("click").click(function() { saveQuestion(id); });
Altri suggerimenti
Esiste un modo per rimuovere tutti gli eventi di clic precedenti assegnati a un pulsante?
$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
Se hai usato ...
$(function(){
function myFunc() {
// ... do something ...
};
$('#saveBtn').click(myFunc);
});
... quindi sarà più semplice staccare più tardi.