我有一个 jQuery UI 日期选择器,当您单击一个日期时,它会将我的 URL 哈希清除为 #
,并且不会更改文本框中的日期。
我假设在某处还有一些其他 JavaScript 实用程序具有某种委托(delegate)事件,该事件也被调用、抛出错误并终止 jquery 处理程序。
我如何单步执行和/或查看所有委托(delegate)事件都匹配此 dom 元素。
最佳答案
Chrome 的开发工具可以帮助解决这个问题:
- 将 Chrome 指向页面
- 右键点击 jQuery UI 日期选择器中的日期,然后选择“检查元素”。
- 在最右侧,有一架 Accordion ,上面有各种东西。底部附近是“事件监听器”。 (当前版本的 Chrome 开发工具对此非常智能,包括查询 jQuery 的处理程序链。)
- 展开“事件监听器”树项,您将看到与该元素相关的 Hook 事件列表,即使未针对该 元素专门设置处理程序。 (例如,如果您使用问题上的赞成按钮执行此操作,您会看到
click
与a.vote-up-off
和document
。)因此您可以绕过这些以查看与该元素的事件相关的直接和委托(delegate)处理程序。
除此之外,您可以使用未缩小版本的 jQuery,并在您单击日期选择器中的日期时完成事件分派(dispatch)。
当然,Gabe's shown如何通过未记录的 jQuery events
数据获取特定于 jQuery 的处理程序。 (这不会向您显示委托(delegate)的处理程序(除非您遍历祖先树),也不会向您显示可能附加的非 jQuery 处理程序,但它仍然是非常有用的东西。)
关于javascript - 查看元素的所有 dom 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087099/