我需要选择所有绑定了“点击”事件的元素吗?是否存在这样的选择器?
答案 0 :(得分:6)
jQuery本身不支持它,但您可以使用hasEvent plugin编写自己的自定义选择器:
jQuery.expr[":"].click = "jQuery(a).hasEvent('click');";
$("a:click").doStuff();
编辑:
还有Event Bound Selector plugin更完整,开箱即用,但也更大。
答案 1 :(得分:0)
没有。您可以遍历所有元素并检查它们是否具有事件绑定。但这不会非常有效,除非您知道哪种元素具有该事件绑定,因此您可以缩小搜索范围。
答案 2 :(得分:0)
搜索职位:
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)');