Come cancellare / rimuovere il gestore eventi JavaScript?
-
03-07-2019 - |
Domanda
Dato il seguente frammento HTML:
<form id="aspnetForm" onsubmit="alert('On Submit Run!'); return true;">
Devo rimuovere / cancellare il gestore per l'evento onsubmit e registrarne uno mio usando jQuery o qualsiasi altro tipo di utilizzo di JavaScript.
Soluzione
Per fare ciò senza alcuna libreria:
document.getElementById("aspnetForm").onsubmit = null;
Altri suggerimenti
Con jQuery
$('#aspnetForm').unbind('submit');
E poi procedi ad aggiungere il tuo.
Prova questo, questo funziona per me:
$('#aspnetForm').removeAttr('onsubmit').submit(function() {
alert("My new submit function justexecuted!");
});
Vedi questo per ulteriori informazioni i dettagli.
Per jQuery, se si associano i gestori di eventi con .live, è possibile utilizzare .die per separare tutte le istanze associate a .live.
Per jQuery, off ()
rimuove tutti gli eventi gestori aggiunti da jQuery da esso.
$('#aspnetForm').off();
La chiamata a .off () senza argomenti rimuove tutti i gestori associati agli elementi.
Se vuoi rimuovere TUTTI gestori di eventi
sull'elemento e sui suoi nodi figlio
e conserva solo la struttura HTML
, possiamo lavorare con il jQuery's
clone () :
var original, clone;
//
original = $('#my-div');
clone = original.clone();
//
original.replaceWith(clone);
Questo efficacemente non lascerà gestori di eventi
sull'elemento
o sui suoi nodi figlio
.
Buona fortuna ...