2012-12-19 83 views
4

我有一個簡單的輸入元素:找出OnClick事件的註冊方法?

<input class="a" />  // <---notice - no inline onclick function 

有人做

$(".a").on('click',function() {alert('1')}); 
// ...and later 
$(".a").on('click',function() {alert('2')}); 

現在,我想找到:「它的功能被執行單擊元素時」

我該如何在jquery/Javascript中做到這一點?

p.s.請忽略這裏的匿名函數,我也可以附加一個常規的命名函數。

jsbin

(IM使用(如jsbin顯示,與1.8.3 - 最新))

+1

http://stackoverflow.com/questions/2223777/jquery-can-i-get-a-reference-to-the-bound -events-on-an-element – eliah

+0

要小心:因爲事件冒泡,事件的處理程序可能不是事件的目標。 – zneak

+0

[查詢針對給定事件類型註冊的事件偵聽器列表]的可能重複(http://stackoverflow.com/questions/3157969/querying-the-list-of-event-listeners-registered-for-a-given -event-type) – zneak

回答

3

試試這個:

console.log($._data($(".a")[0], "events")); 

Tested in 1.8.2

+0

另外請注意,這個方法已被jQuery開發人員推薦用於除調試之外的任何事情。http://blog.jquery.com/2012/08/09/ jquery-1-8-released/ –

+0

@KevinB當然,這也適用於你的回答以及 – Esailija

+0

是的,正如我在我的回答中指出的那樣::) –

1

有一種方法使用jQuery的當前和舊版本做到這一點,但是它是內部的和貶值的,將很快消失。

console.log($(".a").data("events")); 
+0

不工作......) –

+0

http://jsbin.com/apageb/3/edit –

+0

啊,它已被刪除的最新版本jQuery的最後一個版本是1.7.2 –