1

我正在尝试捕获将 DOM 冒泡到正文的单击事件,检查单击元素的选择器是什么,然后基于此选择调用函数。

像这样的东西:

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

    }
});

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

4

2 回答 2

2

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

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

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

    }
});
于 2011-01-18T17:31:37.910 回答
0

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

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

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

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

于 2011-01-18T17:34:00.757 回答