javascript - 如果单击内部 div,如何防止来自外部 div 的单击事件

标签 javascript html click

我有 2 个带有 js 单击事件的 div。一个 div 位于另一个 div 中。

但我不希望在单击内部 div 时触发外部 div 的单击事件。我怎样才能防止这种情况发生?

最佳答案

默认情况下,事件处理从 DOM 的最低级别开始,您已在该级别定义了处理程序来处理目标事件。假设您在父链中更高层定义了事件监听器来处理同一事件,您将需要 stop the propagation of the event如果您不希望事件在您打算处理的层之外处理:

e.stopPropagation();

在下面的示例中查看删除该行时会发生什么:

document.querySelector('.inner').addEventListener('click', function(e) {
  alert('inner div clicked!');
  e.stopPropagation();
});

document.querySelector('.outer').addEventListener('click', function() {
  alert('outer div clicked!');
});
.outer {
  width: 200px;
  height: 200px;
  background: blue;
}

.inner {
  width: 100px;
  height: 100px;
  background: green;
}
<div class='outer'>
  Outer
  <div class='inner'>
    Inner
  </div>
</div>

关于javascript - 如果单击内部 div,如何防止来自外部 div 的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868719/

相关文章:

javascript - 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?

jquery - 我无法在 jQuery 上触发 'click' 事件

javascript - Packery 附加方法添加三个项目。如何添加一项?

javascript - 在初始化之前设置延迟或超时

javascript - 过滤器/搜索表不起作用

javascript - 使用 JavaScript 禁用 HTML 所需输入 onchange 单选按钮

java - 如何通过单击鼠标左键将绿色 ToggleButton 的颜色更改为红色

javascript - 单击函数执行当前和先前的函数代码

javascript - 使用 Javascript Bookmarklet 按标题对页面内容进行分块(第 2 部分)

javascript - 为什么语法 func1(func2)(parameters);工作,它叫什么?