我有一个页面,其中一些事件监听器附加到输入框和选择框.有没有办法找出哪些事件监听器正在观察特定的DOM节点以及哪些事件?
事件附件使用:
Event.observe
;addEventListener
;element.onclick
.我需要找到在对象上注册的事件处理程序.
例如:
$("#el").click(function() {...});
$("#el").mouseover(function() {...});
Run Code Online (Sandbox Code Playgroud)
$("#el")
有点击和鼠标悬停注册.
是否有一个函数来找出它,并可能迭代事件处理程序?
如果通过适当的方法在jQuery对象上不可能,那么在纯DOM对象上是否可能?
使用jQuery,您可以使用.bind()
事件处理程序帮助程序函数或其中一个事件将函数绑定到DOM对象上触发的事件.
jQuery必须以某种方式在内部存储它,我想知道是否有可能给定一个DOM对象,找出哪些事件已绑定到该对象,并访问这些函数等.所需的返回结果可能如下所示:
{
click: [function1, function2],
change: [function3],
blur: [function4, function5, function6]
}
Run Code Online (Sandbox Code Playgroud) 如何找出对象的onclick事件调用的javascript函数?更好的是,我可以找出哪个函数包含的.js文件?
可能重复:
如何在DOM节点上查找事件侦听器?
给定一个元素,让我们说a div
,是否有可能获得绑定到元素触发的特定事件的处理程序列表?
/* pseudo code: click on a div handlers? */
document.getElementById('myDiv').getHandlers('click');
Run Code Online (Sandbox Code Playgroud)
编辑
好的,这里有更多细节.我想将一个单击处理程序绑定到div,除非另一个处理程序已绑定到div.我的想法如下:
/* pseudo code: click on a div handlers? */
if(!document.getElementById('myDiv').getHandlers('click'))
document.getElementById('myDiv').addEventListener('click', myEventhandler);
Run Code Online (Sandbox Code Playgroud) 我在页面上有一个链接列表,有时它们会附加事件,有时不会(它们只是不做任何事情).我想说,'如果这个元素没有事件处理程序(基本上它没有做任何事情),那么就为它添加一类禁用.我用谷歌搜索它,但没有找到任何检测事件处理程序的东西.有谁知道这样做的方法?
javascript ×4
dom ×3
events ×3
jquery ×3
browser ×1
dom-events ×1
html ×1
internal ×1
storage ×1