javascript - 事件传播困惑

标签 javascript dom-events

我有一个元素嵌套在另一个元素中。我在外部元素上注册了一个 mouseover 事件。当我的鼠标进入外部元素和进入内部元素时它都会触发。如何关闭内部元素上的事件触发?

最佳答案

事件在对象上触发,然后在 DOM 树中向上冒泡。但是您可以使用 event.stopPropagation() 阻止它们冒泡。这只适用于符合标准的浏览器(不是所有浏览器,而是最新版本的 IE)。

innerElement.addEventListener('mouseover', function (event) {
    event.stopPropagation();
}, false);

IE 的版本为:

innerElement.attachEvent('onmouseover', function () {
    window.event.cancelBubble = true;
});

总而言之:

function listener(event) {
    event = event || window.event;
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
}
if (innerElement.addEventListener) {
    innerElement.addEventListener('mouseover', listener, false);
} else {
    innerElement.attachEvent('onmouseover', listener);
}

关于javascript - 事件传播困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434032/

相关文章:

javascript - jquery javascript css 问题 - 内联字体粗细操作

javascript - SAPUI5:正确处理点击事件

javascript - 跨浏览器窗口事件?

javascript - 为什么 map 图钉上的点击事件不起作用?

javascript - 如何从脚本中提取数据?

javascript - Three.js场景依赖一个参数

javascript - AWS S3 JavaScript SDK - 网络错误 : Network Failure

javascript - 面向对象的 Javascript/变量声明/性能

javascript - 如何在当前输入有值时前进到下一个表单输入?

javascript - 在 JavaScript 中,有没有一种方法可以以编程方式允许浏览器在无限循环内接收用户事件?