2012-12-19 50 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 –