搜索事件的Jquery Selector

我需要选择所有绑定了“点击”事件的元素吗? 是否存在这样的选择器?

jQuery本身不支持它,但您可以使用hasEvent插件编写自己的自定义选择器:

jQuery.expr[":"].click = "jQuery(a).hasEvent('click');"; $("a:click").doStuff(); 

编辑:

还有Event Bound Selector插件 ,它更完整,开箱即用,但也更大。

不可以。您可以遍历所有元素并检查它们是否具有事件绑定。 但是这不会非常有效,除非您知道哪种元素具有该事件绑定,因此您可以缩小搜索范围。

搜索位置:

  button: function(elem){ return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); }, //init custom ev: function(elem,i,match){ var what = $(elem).hasEvent(match[3]); var type = (typeof what); return what !== null && type !== undefined; } //End custom }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, 

…..

has()相同的用途

例如:

 $('form:ev(submit)'); $('input:ev(click)'); $('a:ev(click)');