Risposte:
Old Way (pre-1.7):
$("...").attr("onclick", "").unbind("click");
New Way (1.7+):
$("...").prop("onclick", null).off("click");
(Sostituisci ... con il selettore che ti serve.)
Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
.prop()
per IE11.
So che questo è abbastanza vecchio, ma quando uno sconosciuto smarrito trova questa domanda cercando una risposta (come ho fatto io), questo è il modo migliore per farlo, invece di usare removeAttr ():
$element.prop("onclick", null);
Citando il doku ufficiale di jQuerys :
"La rimozione di un gestore di eventi onclick inline utilizzando .removeAttr () non ottiene l'effetto desiderato in Internet Explorer 6, 7 o 8. Per evitare potenziali problemi, utilizza invece .prop ()"
<span onlick="method()">sometext>/span>
L'evento è completamente svincolato e funziona alla grande
onclick
proprietàSupponi di aver aggiunto il tuo evento clic in linea, in questo modo:
<button id="myButton" onclick="alert('test')">Married</button>
Quindi, puoi rimuovere l'evento in questo modo:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
listener di eventiSupponi di aver aggiunto il tuo evento clic definendo un listener di eventi, in questo modo:
$("button").on("click", function() { alert("clicked!"); });
... o così:
$("button").click(function() { alert("clicked!"); });
Quindi, puoi rimuovere l'evento in questo modo:
$("#myButton").off('click'); // Removes other events if found
Se non sei sicuro di come sia stato aggiunto il tuo evento, puoi combinarli entrambi, in questo modo:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
se stai usando jquery 1.7
$('html').off('click');
altro
$('html').unbind('click');
È molto facile usare removeAttr.
$(element).removeAttr("onclick");
Dopo aver provato così tanto con bind, unbind, on, off, click, attr, removeAttr, prop, l'ho fatto funzionare. Quindi, ho il seguente scenario: Nel mio HTML NON ho collegato alcun gestore onclick in linea.
Quindi nel mio Javascript ho usato quanto segue per aggiungere un gestore onclick in linea:
$(element).attr('onclick','myFunction()');
Per rimuoverlo in un secondo momento da Javascript ho usato quanto segue:
$(element).prop('onclick',null);
Questo è il modo in cui ha funzionato per me associare e svincolare dinamicamente gli eventi di clic in Javascript. Ricorda di NON inserire alcun gestore onclick in linea nei tuoi elementi.
.on('click', myFunction)
(nota che nonmyFunction
è tra virgolette) e poi, più tardi,.off('click')
E se l'evento onclick non è direttamente sull'elemento, ma dall'elemento genitore? Questo dovrebbe funzionare:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Prova questo se svincoli l'evento onclick tramite ID Quindi usa:
$('#youLinkID').attr('onclick','').unbind('click');
Prova questo se svincoli l'evento onclick per Classe Quindi usa:
$('.className').attr('onclick','').unbind('click');