Jak usunąć "onclick" z JQuery?
Kod PHP:
<a id="a$id" onclick="check($id,1)" href="javascript:void(0)" class="black">Qualify</a>
Chcę usunąć onclick="check($id,1)
, Aby link nie mógł zostać kliknięty lub " check($id,1)
nie zostanie uruchomiony. Jak mogę to zrobić z JQuery?
8 answers
Old Way (pre-1.7):
$("...").attr("onclick", "").unbind("click");
New Way (1.7+):
$("...").prop("onclick", null).off("click");
(Replace ... z selektorem, którego potrzebujesz.)
// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="a$id" onclick="alert('get rid of this')" href="javascript:void(0)" class="black">Qualify</a>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 07:23:21
Wiem, że jest 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 jquerys official doku :
" Usuwanie wbudowanej obsługi zdarzenia onclick za pomocą .removeAttr () nie osiąga pożądanego efektu w przeglądarce Internet Explorer 6, 7 lub 8. Aby uniknąć potencjalnych problemów, użyj .prop() zamiast "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-07 13:39:22
Jeśli używasz jquery 1.7
$('html').off('click');
Else
$('html').unbind('click');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-29 10:17:07
Usuwanie onclick
własności
Załóżmy, że dodałeś Zdarzenie kliknięcia w linii, tak:
<button id="myButton" onclick="alert('test')">Married</button>
Następnie możesz usunąć zdarzenie w następujący sposób:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
Usuwanie click
event listeners
Załóżmy, że dodałeś Zdarzenie click, definiując detektor zdarzeń, tak:
$("button").on("click", function() { alert("clicked!"); });
... albo tak:
$("button").click(function() { alert("clicked!"); });
Następnie możesz usunąć zdarzenie w następujący sposób:
$("#myButton").off('click'); // Removes other events if found
Usuwanie obu
Jeśli nie jesteś pewien, jak Twoje wydarzenie został dodany, można połączyć oba, w ten sposób:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-30 01:37:20
Po tak ciężkich próbach z bind, unbind, on, off, click, attr, removeAttr, prop sprawiłem, że działało. Tak więc, mam następujący scenariusz: w moim html nie mam dołączone żadnych inline onclick handlers.
Następnie w moim Javascript użyłem następujących, aby dodać wbudowaną obsługę onclick:
$(element).attr('onclick','myFunction()');
Aby usunąć to w późniejszym momencie z Javascript użyłem następującego:
$(element).prop('onclick',null);
W ten sposób działało dla mnie bindowanie i odłączanie zdarzeń kliknięć dinamically w Javascript. Pamiętaj nie aby wstawić dowolny wbudowany moduł obsługi onclick do elementów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-15 12:40:45
Używanie removeAttr jest bardzo proste.
$(element).removeAttr("onclick");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-09 16:02:47
Co jeśli zdarzenie onclick nie jest bezpośrednio na elemencie, ale z elementu nadrzędnego? Powinno działać:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-22 11:48:34
Spróbuj tego, jeśli usuniesz Zdarzenie onclick za pomocą ID, użyj:
$('#youLinkID').attr('onclick','').unbind('click');
Spróbuj tego, jeśli usuniesz Zdarzenie onclick za pomocą klasy, użyj:
$('.className').attr('onclick','').unbind('click');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-20 04:36:03