2010-05-04 11 views
22

Tamam, jQuery'de satır içi onclick olayının nasıl çözüleceğini merak ediyorum. .unbind()'un işe yarayacağını düşünebilirsiniz, ancak işe yaramıyor. Gördüğünüz gibiSatır içi bağlantıyı açma onClick jQuery'de çalışmıyor musunuz?

function UnbindTest() { 
    $("#unbindTest").unbind('click'); 
} 

function BindTest() { 
    $("#unbindTest").bind('click', function() { alert("bound!"); }); 
} 


<button type="button" onclick="javascript:UnbindTest();">Unbind Test</button> 
<button type="button" onclick="javascript:BindTest();">Bind Test</button> 
<button type="button" onclick="javascript:alert('unbind me!');" id="unbindTest">Unbind Button</button> 

, inline onclick olayı kesin değil unbinding ... ancak tıklama etkinlik eklendi unbind kapsamaz:

kendin için sınamak aşağıdaki HTML ve JavaScript ile oynamak için bind() ile. Aşağıdaki yapmanın kısa satır içi onclick olayları unbind için bir yol olup olmadığını

Yani, merak ediyorum:

$("#unbindTest").get(0).onclick = ""; 

Teşekkür

cevap

34

jQuery'nin kasası, onclick öznitelikleri üzerinde çalışmaz - bu, bind aracılığıyla eklenmiş olan işlevler için çalışır ve bu nedenle $(...).data('events') numaralı telefondan edinilebilir. onclick kaldırmak için removeAttr kullanmanız gerekir.

Daha fazla bilgi için this question'u okuyun.

+3

snap ... $ ("# unbindTest"). RemoveAttr ('onclick'); çalıştı. – Polaris878

4

unbindbind kayıtlı olay işleyicileri keser, olanları aracılığıyla atanmamış onclick veya diğer DOM0 öznitelikleri. Dokümanlar:

.bind() ile bağlı olan herhangi bir işleyici .unbind() ile temizlenebilir.

Düzenleme: Sen elemanı üzerindeki ilgili niteliğini temizleyerek DOM0 işleyicileri salmak. Bunu yapmanın jQuery yolunu aramak zorunda kaldım: removeAttr.