0

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

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

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

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

4

1 回答 1

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) 因为它与 each($('*')) 相关,并执行您要执行的工作

于 2012-10-05T16:41:44.847 回答