You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止父DOM元素的点击事件触发?(附代码场景)

解决事件冒泡问题,仅触发子元素点击事件

这是很常见的事件冒泡场景——浏览器默认的事件传播机制会让点击事件从触发的子元素,沿着DOM树向上冒泡到父元素、祖先元素,所以你点击子div时,child()执行后,父元素的parent()也会被触发。

要只触发子元素的点击事件,我们需要在子元素的事件处理函数里阻止事件继续向上传播,具体可以用event.stopPropagation()方法实现:

修改后的代码示例

HTML部分:

<div onclick="parent()">
  <div onclick="child(event)"></div>
</div>

JS部分:

function parent() {
  console.log("I'm your father");
}
function child(event) {
  console.log("You're not my father");
  // 阻止事件向上冒泡,父元素的点击事件就不会被触发了
  event.stopPropagation();
}

补充说明

  • event.stopPropagation()的作用就是终止事件在DOM树中的传播,让事件停留在当前触发的元素,不会再触发父级元素的同类型事件。
  • 如果你的项目更推荐用非内联事件绑定(比如addEventListener),写法会更清晰也便于维护,示例如下:
    // 获取元素
    const parentDiv = document.querySelector('div:first-child');
    const childDiv = parentDiv.querySelector('div');
    
    // 绑定事件
    parentDiv.addEventListener('click', parent);
    childDiv.addEventListener('click', function(event) {
      console.log("You're not my father");
      event.stopPropagation();
    });
    

内容的提问来源于stack exchange,提问作者kispi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:04:56