搜索事件的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)');