JQuery ile "onclick" nasıl kaldırılır?


100

PHP kodu:

<a id="a$id" onclick="check($id,1)" href="javascript:void(0)"  class="black">Qualify</a>

onclick="check($id,1)Bağlantının tıklanmaması veya " check($id,1)tetiklenmemesi için bağlantısını kaldırmak istiyorum . JQuery ile bunu nasıl yapabilirim?

Yanıtlar:


239

Eski Yol (1.7 öncesi):

$("...").attr("onclick", "").unbind("click");

Yeni Yol (1.7+):

$("...").prop("onclick", null).off("click");

(İhtiyacınız olan seçici ile değiştirin.)


26
Bunun removeAttr ('onclick') olması gerekmez mi?
Roatin Mart

Evet, iyi nokta, daha temiz olabilir, ancak uygulama açısından farklı olacağından emin değilim.
glmxndr

6
JQuery 1.7+ ile açma / kapama kullanabilirsiniz: stackoverflow.com/questions/209029/…
Lance Cleveland

6
RemoveAttr api.jquery.com/removeattr ile ilgili ilk yorumu görünRemoving 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
andyface

2
@andyface evet bu belgelerde var, ancak .prop()IE11 için de kullanmak zorunda kaldım .
onetwo12

58

Bunun oldukça eski olduğunu biliyorum, ancak kayıp bir yabancı bu soruyu bir yanıt ararken bulduğunda (benim yaptığım gibi) o zaman bunu yapmanın en iyi yolu removeAttr () kullanmak yerine:

$element.prop("onclick", null);

JQuerys resmi dokusuna atıfta bulunma :

".RemoveAttr () kullanarak bir satır içi tıklama olay işleyicisini kaldırmak, Internet Explorer 6, 7 veya 8'de istenen etkiyi sağlamaz. Olası sorunları önlemek için bunun yerine .prop () kullanın"


1
Bu şekilde yazdığınızda onlick olayını nasıl kaldıracağınızın en iyi yolu budur. <span onlick="method()">sometext>/span>Etkinlik tamamen serbest ve harika çalışıyor
zdarsky.peter

3
Bunun en iyi yol olduğunu sanmıyorum. jsfiddle.net/TN2wr - jsfiddle.net/TN2wr/1
Gus

1.6'dan daha eski bir JQ kullanıyorum, bu nedenle $ (element) .attr ('onclick', null); benim için çalışıyor.
metamagikum

18

onclickMülkün kaldırılması

Tıklama etkinliğinizi şunun gibi satır içi eklediğinizi varsayalım:

<button id="myButton" onclick="alert('test')">Married</button>

Ardından etkinliği şu şekilde kaldırabilirsiniz:

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found

clickOlay dinleyicilerini kaldırma

Aşağıdaki gibi bir etkinlik işleyici tanımlayarak tıklama etkinliğinizi eklediğinizi varsayalım:

$("button").on("click", function() { alert("clicked!"); });

... veya bunun gibi:

$("button").click(function() { alert("clicked!"); });

Ardından etkinliği şu şekilde kaldırabilirsiniz:

$("#myButton").off('click');          // Removes other events if found

İkisini de kaldırmak

Etkinliğinizin nasıl eklendiğinden emin değilseniz, her ikisini de şu şekilde birleştirebilirsiniz:

$("#myButton").prop('onclick', null)  // Removes 'onclick' property if found
              .off('click');          // Removes other events if found

17

jquery 1.7 kullanıyorsanız

$('html').off('click');

Başka

$('html').unbind('click');


5

Bind, unbind, on, off, click, attr, removeAttr, prop ile çok uğraştıktan sonra çalışmasını sağladım. Öyleyse, şu senaryoya sahibim: HTML'ime herhangi bir satır içi onclick işleyicisi EKLEMEDİM.

Ardından, Javascript'imde bir satır içi onclick işleyicisi eklemek için aşağıdakileri kullandım:

$(element).attr('onclick','myFunction()');

Bunu daha sonra Javascript'ten kaldırmak için aşağıdakileri kullandım:

$(element).prop('onclick',null);

Tıklama olaylarını dinamik olarak Javascript'te bağlama ve çözme yöntemi bu şekilde oldu. Öğelerinize herhangi bir satır içi onclick işleyici eklememeyi unutmayın.


Bunu beğendim, ama neden biri pervane diğeri de çekim olsun?
Stachu

Emin değilim, ancak bunu görme şeklim, ilgili myFunction () ile onclick işleyicisini ekler / enjekte eder ve prop ('onclick', null) özelliği kaldırır, böylece hiçbir işlev çağrılmaz. Bu benim için çalıştı. Ve öğenin attr aracılığıyla onclick işleyicisine sahip olduğunu ve prop'tan sonra nasıl kaldırıldığını fark edebildim.
bboydflo

1
İlerisi için, gerçekten kullanarak olmalıdır .on('click', myFunction)(not myFunctionolduğunu değil tırnak içinde) ve daha sonra, daha sonra,.off('click')
jdb hala Monica hatırlar

1

Ya onclick olayı doğrudan öğede değil, ana öğedense? Bu çalışmalı:

$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
    e.preventDefault();
    e.stopPropagation();
    return false;
});

Başka bir tıklama dinleyicisi eklemek (varsayılanı önlemek için vb.) Onu dinleyici listesinin sonuna ekleyebilir ve bu nedenle diğer dinleyiciler yine de ilk çalıştırılır. Listeye ilk mi yoksa son mu eklendiğinden emin değilim. Her neyse, diğer cevaplarda görüldüğü gibi 'off' kullanmak daha iyidir.
Frederic Leitenberger

0

Kimliğe göre onclick olayının bağlantısını kaldırırsanız bunu deneyin Ardından şunu kullanın:

$('#youLinkID').attr('onclick','').unbind('click');

Onclick olayının bağlantısını Sınıfa göre çözerseniz bunu deneyin Sonra şunu kullanın:

$('.className').attr('onclick','').unbind('click');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.