【发布时间】:2012-02-13 23:35:09
【问题描述】:
我正在使用其他人不久前编写的 HTML/jQuery 页面。为了调试,我需要找到所有在页面加载时为任何元素触发的 .blur() 事件。
我可以使用以下方法将事件绑定到所有元素:
$("*").each(function() {
$(this).blur(function() {
alert(this);
});
});
但是这不起作用(即使我可以在页面加载之前运行它),因为页面上的脚本无论如何都会重新绑定 .blur() 事件。
有没有办法让我看到在页面加载时执行了哪些 .blur() 事件?我想我可能能够在运行时覆盖 .blur() 内部 jQuery 函数,而不会被模糊事件绑定覆盖,但不确定是否可能。
【问题讨论】:
-
我仍然不完全确定你在问什么。您想将自己的
blur事件附加到所有元素(这对调试有什么帮助?)?您是否想要一个附有blur事件处理程序的所有元素的列表?或者您想知道在页面加载完成后哪些元素的blur事件处理程序被触发? -
@Anthony 第三个选项正是我需要做的:)
-
在这种情况下,@RobW 的回答可能可以满足您的需求。在一个元素上多次调用
.blur()(或.click()等)不会覆盖之前添加的处理程序。但是,如果现有的 jQuery 代码(无论出于何种原因)确实执行了$('selector').unbind('blur').blur(function(e) {...});,您可能会在找到附加通用处理程序的正确位置时遇到问题。 -
实际上,只是为了澄清一下——我们所说的是程序触发(即
$('selector').trigger('blur');或$('selector').blur())还是通过用户与页面的交互触发? -
@Anthony 以编程方式触发。
标签: jquery firebug monkeypatching