javascript - 为什么这段代码中的js事件没有冒泡?

标签 javascript

我希望能够单击 div“三”并且它应该冒泡到其他两个?

const divs = document.querySelectorAll('div');
divs.forEach(div => div.addEventListener('click', function (e) {
  console.log(e.target.className);
}));
<div class="one">
  <div class="two">
    <div class="three">
        Hello World
    </div>
  </div>
</div>
    
           
    

最佳答案

它确实冒泡了,您应该收到 3 条日志消息。

它每次记录三个,因为e.target是事件冒泡的原始元素。要获取传播中的当前元素,请使用e.currentTarget。此代码记录三、二、一

参见What is the exact difference between currentTarget property and target property in javascript

const divs = document.querySelectorAll('div');
divs.forEach(div => div.addEventListener('click', function (e) {
  console.log(e.currentTarget.className);
}));
<div class="one">
  <div class="two">
    <div class="three">
        Hello World
    </div>
  </div>
</div>
    
           
    

关于javascript - 为什么这段代码中的js事件没有冒泡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52230358/

相关文章:

javascript - 使用选项卡式内容滚动页面

javascript - 尝试按字母顺序排列 jQuery UI Accordion ;适用于除 IE 之外的所有内容

javascript - 将 td 值传递给 JavaScript

javascript - 如何将 <div> 转换为可折叠面板?

javascript - 如何关闭 websocket 就像 chrome 窗口关闭以将缓冲区刷新为 0

javascript - 异步捆绑

javascript - 如何使用 javascript 在数组中创建 li 和标签

javascript - 为您的项目修改 twitter bootstrap javascript 时的最佳实践是什么

javascript - AngularJS + PhoneGap

javascript - 滚动时调整 Logo 大小