搜索事件的Jquery Selector

时间:2009-03-19 09:38:29

标签: jquery events

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

3 个答案:

答案 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)');