Odpowiedzi:
Old Way (przed 1.7):
$("...").attr("onclick", "").unbind("click");
Nowy sposób (1.7+):
$("...").prop("onclick", null).off("click");
(Zastąp ... selektorem, którego potrzebujesz.)
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()
również dla IE11.
Wiem, że to dość stare, ale kiedy zagubiony nieznajomy znajdzie to pytanie szukając odpowiedzi (tak jak ja), to jest to najlepszy sposób, aby to zrobić, zamiast używać removeAttr ():
$element.prop("onclick", null);
Cytując oficjalne doku jQuerys :
„Usunięcie wbudowanej procedury obsługi zdarzeń onclick za pomocą .removeAttr () nie daje pożądanego efektu w programie Internet Explorer 6, 7 lub 8. Aby uniknąć potencjalnych problemów, użyj zamiast tego .prop ()”
<span onlick="method()">sometext>/span>
Wydarzenie jest w pełni niezwiązane i działa świetnie
onclick
mieniaZałóżmy, że dodałeś zdarzenie kliknięcia w tekście, na przykład:
<button id="myButton" onclick="alert('test')">Married</button>
Następnie możesz usunąć wydarzenie w ten sposób:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
detektorów zdarzeńZałóżmy, że dodałeś zdarzenie kliknięcia, definiując odbiornik zdarzeń, na przykład:
$("button").on("click", function() { alert("clicked!"); });
... lub tak:
$("button").click(function() { alert("clicked!"); });
Następnie możesz usunąć wydarzenie w ten sposób:
$("#myButton").off('click'); // Removes other events if found
Jeśli nie masz pewności, w jaki sposób wydarzenie zostało dodane, możesz połączyć oba, na przykład:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
jeśli używasz jquery 1.7
$('html').off('click');
jeszcze
$('html').unbind('click');
Jest to bardzo łatwe dzięki removeAttr.
$(element).removeAttr("onclick");
Po tak ciężkich próbach z bind, unbind, on, off, click, attr, removeAttr, prop, sprawiłem, że zadziałało. Mam więc następujący scenariusz: W moim html NIE dołączyłem żadnych programów obsługi onclick.
Następnie w moim JavaScript użyłem następującego, aby dodać wbudowaną obsługę onclick:
$(element).attr('onclick','myFunction()');
Aby usunąć to później z Javascript, użyłem:
$(element).prop('onclick',null);
W ten sposób pracowałem w przypadku dynamicznego łączenia i usuwania powiązań kliknięć w Javascript. Pamiętaj, aby NIE wstawiać żadnych funkcji obsługi onclick w swoich elementach.
.on('click', myFunction)
(zauważ, że niemyFunction
ma tego w cudzysłowach), a później,.off('click')
Co jeśli zdarzenie onclick nie jest bezpośrednio na elemencie, ale z elementu nadrzędnego? To powinno działać:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Spróbuj tego, jeśli usuniesz wiązanie zdarzenia onclick według identyfikatora Następnie użyj:
$('#youLinkID').attr('onclick','').unbind('click');
Spróbuj tego, jeśli usuniesz wiązanie zdarzenia onclick według klasy. Następnie użyj:
$('.className').attr('onclick','').unbind('click');