如何查找绑定到自定义事件的所有元素?

时间:2012-10-05 16:36:44

标签: jquery

我想知道是否有任何方法可以自动检索已绑定到自定义事件的所有元素(或jQuery选择器)?

换句话说,我已将以下元素绑定到事件“something_added”:

$('div#slider').bind('something_added',function(){});
$('input#add').bind('something_added',function(){});

无论如何使用事件名称('something_added')自动检索$('div#slider')$('input#add')

1 个答案:

答案 0 :(得分:0)

您可以选择所有元素并遍历他们的事件集合,寻找您感兴趣的事件:

jQuery.each($('#someElementId').data('events'), function(i, event){

    jQuery.each(event, function(i, handler){

        console.log( handler.toString() );

    });

});

不确定它是否适用于jquery 1.8


更新:以下是我放在一起的示例:http://jsfiddle.net/nicholmikey/sADZU/5/

<html>

    <body>

        <form method="post" action="#">
            <input type="submit" value="Submit" onClick="return false">           
        </form>
    </body>

</html>​

和jquery(1.7.2):

$('input').bind('something_added', function() {});


$.each($('*'), function(i, events) {

    var events = $(this).data('events');
    if (events != null) {
        $.each(events, function(h, event) {
            alert(event[0].type);
    });
}

});

一旦找到包含您正在寻找的事件的元素,您可以使用$(this),因为它与每个元素($('*')相关)并完成您要做的工作