如何查看附加到html元素的事件?

Vas*_* A. 65 javascript jquery javascript-events

你好,我是一名新的程序员,还在学习.这是我想要弄清楚的代码:

<div id="buy" class="buy button">Buy</div>
Run Code Online (Sandbox Code Playgroud)

当我点击div(按钮)时,会执行一些javascript代码,但我不知道是不是.如何在点击发生时判断触发了什么功能?一些监听器如何附加到此元素

小智 104

在Google Chrome的开发者工具中(单击扳手图标>工具>开发人员工具),在元素选项卡中选择元素,在右侧打开"事件监听器"面板,您将看到所有事件

  • +1很好.我从来没有注意到Chrome的工具有这个. (8认同)
  • 这个答案比接受的答案要好得多. (8认同)
  • 对于喜欢热键的人来说,按下F12也可以打开它. (4认同)

Akn*_*sis 23

如果您使用Firefox和Firebug,您可以尝试安装FireQuery.它将使您可以看到 jQuery绑定的处理程序.http://firequery.binaryage.com/

  • 你怎么知道它是用jQuery附加的? (11认同)
  • 这对于使用普通Javascript的DOM Level 1 + 2侦听器绑定的事件不起作用 (4认同)
  • @kissmyface:他说*"如果你使用Firefox"*,这与我的评论无关. (2认同)

jAn*_*ndy 13

你不能通过"仅仅"使用ECMAscript本身以非常好的方式做到这一点.例如,如果DOM Level 1以形式添加了click事件处理程序

document.getElementById('buy').onclick = function() {};
Run Code Online (Sandbox Code Playgroud)

你当然可以轻松拦截节点本身的属性.如果DOM Level 2.addEventListener()respectevily 发挥作用,事情会变得更加复杂.attachEvent().现在你没有真正的"地方"来寻找所有不同的监听器功能所在的位置.

使用jQuery会变得更好.jQuery将把它所有的事件处理函数保存在一个特殊的对象中,该对象链接到调用的DOM节点.您可以通过获取.data()类似节点的-expando属性来检查

$('#buy').data('events');
Run Code Online (Sandbox Code Playgroud)

但是,现在我已经描述了将事件监听器绑定到节点的三种不同方式(实际上它是两个,因为像jQuery这样的库当然也使用DOM Level 1或2方法).

如果某个事件是由代表团触发的,那真的很难看.这意味着,我们将click事件绑定在某个父节点上,只是等待该事件冒泡到我们这样我们可以检查target.所以,现在我们甚至不具备有直接的关系nodeevent listener.

这里的结论是,了解一个浏览器插件或者像VisualEvent这样的东西.


web*_*aly 9

您可以使用" Visual Event 2 "脚本作为书签或与Chrome扩展程序相同的脚本.

此脚本显示附加到dom-elements的所有js事件.


小智 5

使用 jQuery("#buy").data('events');

http://api.jquery.com/jQuery.data/可能很有趣.

  • 你怎么知道它与jQuery绑定,并直接绑定到元素? (2认同)