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?

Author: cheersmate, 2009-11-06

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>
 196
Author: glmxndr,
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 "

 56
Author: acme,
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');
 14
Author: Jaydeep Jadav,
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
 9
Author: John Slegers,
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.

 6
Author: bboydflo,
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");
 5
Author: Nor Leyva López,
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;
});
 1
Author: Milan,
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');
 0
Author: Vishnu Sharma,
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