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
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等.在不同的浏览器中,某些绑定问题可能会有所不同.覆盖所有基础是好的.
如果你有一个叠加层并且需要在一个元素下面,你可以双击任何绑定来隐藏它以进入你需要查看的事件.

根据其他答案和评论.
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
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中删除