Click事件会穿透到元素吗?

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

简单地说:

jQuery("html").click(function(e){
    if (e.target == this){
        alert("this really shouldn't happen");
    }
});

在IE8上,警报会在页面上的许多位置触发,包括嵌套在其他元素内的元素!有什么会导致这种怪异行为的吗?

这是一个主要问题,因为这会导致click事件绕过绑定到文档内部元素的所有处理程序,而不是直接在文档本身上触发(直接,而不是委派)。

编辑

[我还怀疑在IE8上使用开发人员工具时出现了问题……当我使用“通过单击选择元素”工具并将鼠标悬停在有问题的地方时,它将“装箱”整个文档,就好像有该位置没有任何子孙(是的,我单击“刷新”以确保“开发工具”具有文档的最新架构)。

编辑2

对不起,我忘了...这些麻烦点之一是“ dl”元素...也许IE8对此感到困惑,只是将事件交给了文档?

javascript html jquery internet-explorer-8 dom-events
1个回答
1
投票

这是由于事件“冒泡”和事件“捕获”不同。

本页对此进行了很好的解释:http://www.quirksmode.org/js/events_order.html

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