2014-01-09 52 views
0

我有了像檢測事件的HTML元素使用jQuery

<a href='#' onclick="javascript:Domystuff(); return false;"> Some text<a> 

我添加一個jQuery在網站上的一些其他用途的遺留代碼,現在我想檢測,如果這賦予了標籤已經「 onclick「事件可用或不可用。但我沒有找到我該怎麼做。我看到大多數人建議使用$("a").data('events'),但那對我並不起作用,並且總是給出未定義的。然而,當我打電話給$("a").click()它確實執行Domystuff()函數。

任何想法如何檢測如果onclickonchangeonblur像HTML屬性事件存在或不存在。

編輯:我忘了提及,我不只是想檢測來自屬性的所有事件,但我希望單擊或模糊或更改元素上的所有事件。希望我現在明確自己。由於

+0

相關問題:https://stackoverflow.com/questions/446892/how-to-find-event-listeners-on-a-dom-node – Simone

+0

@simone不完全相關,因爲我看到,因爲我想通過代碼檢查是否所有事件,而不是在調試環境中。 –

回答

1

嘗試這樣的事情

if ($('a').attr("onClick") != undefined) {} 
+1

您也可以嘗試在選擇器中更具體。 '$(「a」)'相當貪婪,但是如果添加一個類$(「a.myClass」),它只會觸發該元素。 –

2
if($('a').attr('onclick')) { // exists 
} 

畢竟,即使是事件處理HTML - 屬性。 不過,這不會檢測的jQuery附加事件處理器,所以:

var ahrefs = $('a'); 
for(var i = 0;i < ahrefs.length;i++) { 
    var node = ahrefs.get(i); 

    if(typeof node.onClick == function) { // has an attached event handler 
    } 
} 

簡單,不是嗎?

+0

+1,很有趣,我已經想到了,但這並不能解決我的問題。但是是的,這是一個選擇。實際上這是我的錯,我沒有提到我想要檢測所有事件並不重要,它們如何附加到元素,而不僅僅是屬性。至少那些從jquery中添加的屬性和屬性。 –