事件冒泡和jQuery

问题描述 投票:1回答:2

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

类似这样的东西:

<body>
    <a id="do-default-code">Default code</a>
    <a id="do-override-code">Override code</a>
</body>

而且我正在像这样拍照(伪代码)。我正在使用jQuery:

$('body').bind('click', function() {
    if ($(this) === $('#do-override-code')) {
        overrideCode();
    } else {

    }
});

我意识到我在这种情况下不完全了解事件冒泡,并且上面的代码不正确,所以我正在寻求社区的指导。

jquery jquery-events event-bubbling
2个回答
2
投票

在您的语句中,您的this指代您将事件绑定到的元素。在这种情况下,身体元素。因此,if语句永远不会为真。

因此,要获取您实际单击的元素,需要检查事件对象中的目标。像下面这样的东西应该起作用。

$('body').bind('click', function(event) {
    if ($(event.target).attr('id') == 'do-override-code')) {
        overrideCode();
    } else {

    }
});

0
投票

您需要在函数中传递事件并检查事件。

此链接提供了您可能想知道的http://www.quirksmode.org/js/events_properties.html的所有信息,例如

哪个HTML元素是事件的目标?

您可以从中轻松提取所需的任何语义信息

© www.soinside.com 2019 - 2024. All rights reserved.