列出元素的所有绑定(使用jQuery)

Zar*_*doz 40 javascript jquery binding

有没有办法列出jQuery元素上的所有绑定?jQuery的bind()似乎只是附加它们,我没有找到一个确实得到绑定的jQuery函数.

jAn*_*ndy 30

这个答案适用于jQuery版本<1.8

最好的方法,可能是FireQueryFireFox 的插件.真的是一个很好的工具.

如果您想/需要完成"in-code",请使用jQuerys .data('events')对象.

$.each($('#element').data('events'), function(i, e) {
    console.log(i, e);
});
Run Code Online (Sandbox Code Playgroud)

通过jQuery绑定的所有事件都会被推送到该对象中.当然,可能还有其他事件处理程序,比如on-anything,您必须明确检查.

参考:FireQuery

  • 这里没有任何答案对我有用.接受的答案[这里](http://stackoverflow.com/questions/2518421/jquery-find-events-handlers-registered-with-an-object)工作得很好.`jQuery._data(elem,"events");`其中`elem`是一个HTML元素(不是jQuery对象) (6认同)
  • 如果您使用的是> = jQuery 1.8,请参阅下面的答案. (4认同)

Gri*_*inn 19

从jQuery 1.8开始,新语法是:

$.each($._data("#element", "events"), function(i, e) {
console.log(i, e);
});
Run Code Online (Sandbox Code Playgroud)

请注意,它$._data("#element" 不是 $.data($("#element"),因此如果需要使用,请务必打开选择器$myJQuerySelector[0].

阅读更多...


vas*_*kin 13

必须有一种方法以编程方式进行,并且有人已经弄明白并将其放入可视化工具中.

我不确定这是否能回答你的问题,但我发现确定这些绑定的最佳工具叫做Visual Event(不是一个好名字,实际上很难谷歌).

这适用于Firefox和Chrome,Chromium,Safari等.在不同的浏览器中,某些绑定问题可能会有所不同.覆盖所有基础是好的.

如果你有一个叠加层并且需要在一个元素下面,你可以双击任何绑定来隐藏它以进入你需要查看的事件.

替代文字


Hab*_*wad 5

根据其他答案和评论.

JQuery 1.8及以上版本

var elementSelector = '#element-id';

$(elementSelector).bind('click.test', function(){}); // For testing.

$.each($._data($(elementSelector)[0], 'events'), function(i, e) {
    console.log(i, e);
});
Run Code Online (Sandbox Code Playgroud)

第一个参数$._data()不是jquery对象.

请注意,这不是受支持的公共接口 ; 实际的数据结构可能会因版本不同而发生变化.- Jquery 1.8 Realeased


在JQuery 1.8下面

var elementSelector = '#elementid';

$(elementSelector).bind('click.test', function(){}); // For testing.

$.each($(elementSelector).data('events'), function(i, e) {
    console.log(i, e);
});
Run Code Online (Sandbox Code Playgroud)

在1.6版本中,jQuery将其内部数据与用户数据分开,以防止名称冲突.但是,有些人正在使用内部未记录的"事件"数据结构,因此我们仍然可以通过.data()检索它.这在1.8.- Jquery 1.8 Realeased中删除