Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
事件冒泡和jQuery_Jquery_Jquery Events_Event Bubbling - Fatal编程技术网

事件冒泡和jQuery

事件冒泡和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> 我意识到我不完全理解此上下文中的事件冒泡,并且上面的代码不正确,因此我希望社区提供指

我试图捕获一个将DOM冒泡到主体的click事件,检查click元素的选择器是什么,然后在此基础上选择调用函数

大概是这样的:

<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 {

    }
});