事件冒泡和jQuery
我试图捕获一个将DOM冒泡到主体的click事件,检查click元素的选择器是什么,然后在此基础上选择调用函数 大概是这样的:事件冒泡和jQuery,jquery,jquery-events,event-bubbling,Jquery,Jquery Events,Event Bubbling,我试图捕获一个将DOM冒泡到主体的click事件,检查click元素的选择器是什么,然后在此基础上选择调用函数 大概是这样的: <body> <a id="do-default-code">Default code</a> <a id="do-override-code">Override code</a> </body> 我意识到我不完全理解此上下文中的事件冒泡,并且上面的代码不正确,因此我希望社区提供指
<body>
<a id="do-default-code">Default code</a>
<a id="do-override-code">Override code</a>
</body>
我意识到我不完全理解此上下文中的事件冒泡,并且上面的代码不正确,因此我希望社区提供指导。在您的声明中,您的
此
指您已将事件绑定到的元素。在本例中,是body元素。因此,if语句永远不会为真
因此,要获取实际单击的元素,需要检查事件对象中的目标。像下面这样的方法应该可以奏效
$('body').bind('click', function(event) {
if ($(event.target).attr('id') == 'do-override-code')) {
overrideCode();
} else {
}
});
您需要在函数中传入事件并检查事件 此链接提供了您想要了解的所有信息,例如 哪个HTML元素是事件的目标
你可以很容易地从中提取你想要的任何语义信息对于初学者来说,你使用的是不匹配的引号…@drachenstern感谢你敏锐的眼光。关于如何捕获此事件并检查单击元素的选择器,您有什么建议吗?您对两个jQuery对象与
==
的比较将永远不会相等:--此外,您可能想看一看,但为什么不呢?因为它的功能基本相同。而且,event.target.id==“do override code”
应该足够了,而且比调用.attr()
要快,如果我需要调用overrideCode()
但不调用绑定到“\do override code”的任何其他事件,您有什么建议?目前我正在做一些有点笨拙的事情:element.unbind('click');元素绑定('click',重写代码)代码>
$('body').bind('click', function(event) {
if ($(event.target).attr('id') == 'do-override-code')) {
overrideCode();
} else {
}
});