Antworten:
Alter Weg (vor 1.7):
$("...").attr("onclick", "").unbind("click");
Neuer Weg (1.7+):
$("...").prop("onclick", null).off("click");
(Ersetzen Sie ... durch den gewünschten Selektor.)
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()
für IE11 verwenden.
Ich weiß, dass dies ziemlich alt ist, aber wenn ein verlorener Fremder diese Frage auf der Suche nach einer Antwort findet (wie ich), ist dies der beste Weg, dies zu tun, anstatt removeAttr () zu verwenden:
$element.prop("onclick", null);
Unter Berufung auf das offizielle Doku von jQuerys :
"Durch das Entfernen eines Inline-Onclick-Ereignishandlers mit .removeAttr () wird in Internet Explorer 6, 7 oder 8 nicht der gewünschte Effekt erzielt. Verwenden Sie stattdessen .prop (), um mögliche Probleme zu vermeiden."
<span onlick="method()">sometext>/span>
Die Veranstaltung ist völlig ungebunden und funktioniert
onclick
Eigentum entfernenAngenommen, Sie haben Ihr Klickereignis wie folgt inline hinzugefügt:
<button id="myButton" onclick="alert('test')">Married</button>
Dann können Sie das Ereignis folgendermaßen entfernen:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
Ereignis-Listener entfernenAngenommen, Sie haben Ihr Klickereignis hinzugefügt, indem Sie einen Ereignis-Listener wie folgt definiert haben:
$("button").on("click", function() { alert("clicked!"); });
... oder so:
$("button").click(function() { alert("clicked!"); });
Dann können Sie das Ereignis folgendermaßen entfernen:
$("#myButton").off('click'); // Removes other events if found
Wenn Sie sich nicht sicher sind, wie Ihr Ereignis hinzugefügt wurde, können Sie beide wie folgt kombinieren:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
Wenn Sie jquery 1.7 verwenden
$('html').off('click');
sonst
$('html').unbind('click');
Mit removeAttr ist das sehr einfach.
$(element).removeAttr("onclick");
Nachdem ich mich so sehr mit Binden, Entbinden, Ein, Aus, Klicken, Attr, EntfernenAttr, Requisite beschäftigt hatte, ließ ich es funktionieren. Ich habe also das folgende Szenario: In meinem HTML habe ich KEINE Inline-Onclick-Handler angehängt.
Dann habe ich in meinem Javascript Folgendes verwendet, um einen Inline-Onclick-Handler hinzuzufügen:
$(element).attr('onclick','myFunction()');
Um dies zu einem späteren Zeitpunkt aus Javascript zu entfernen, habe ich Folgendes verwendet:
$(element).prop('onclick',null);
Auf diese Weise hat es für mich funktioniert, Klickereignisse in Javascript dinamisch zu binden und zu lösen. Denken Sie daran, KEINEN Inline-Onclick-Handler in Ihre Elemente einzufügen.
.on('click', myFunction)
(beachten Sie, dass myFunction
ist nicht in Anführungszeichen) und dann später.off('click')
Was ist, wenn sich das Ereignis onclick nicht direkt auf das Element bezieht, sondern auf das übergeordnete Element? Das sollte funktionieren:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Versuchen Sie dies, wenn Sie das Onclick-Ereignis nach ID aufheben. Verwenden Sie dann:
$('#youLinkID').attr('onclick','').unbind('click');
Versuchen Sie dies, wenn Sie das Ereignis onclick nach Klasse aufheben. Verwenden Sie dann:
$('.className').attr('onclick','').unbind('click');