点击事件发生时如何捕获最外部的元素

How to capture the most exterior element when click event occurs

我需要在点击div时获取最多的元素...比如这个...

 <div id="show_trash_id" class="switch switch-xs">
   <input type="checkbox"/>
   <span class="slider round">
     <span class="text-on">ON</span>
     <span class="text-off">OFF</span>
   </span>
 </div>

我认为这与某种冒泡或捕获效果有关。但是我无法处理...我已经尝试过 event.stopPropagation() 或使用 useCature 均未成功。

function capture (event) {
   event.stopPropagation();
   console.log(event.target);
}
document.querySelector('#show_trash_id').addEventListener('click', capture, true) 

简而言之,我想要的是在控制台中显示以下波纹管:

     <div id="show_trash_id" class="switch switch-xs">
       <input type="checkbox"/>
       <span class="slider round">
         <span class="text-on">ON</span>
         <span class="text-off">OFF</span>
       </span>
     </div>

我以前遇到过这个问题。我的解决方案一直是使用匿名函数并使用 this 关键字而不是 event.target,因为它指的是事件侦听器添加到的元素。

但是请注意,匿名函数不能是箭头函数,因为 this 在箭头函数的上下文中是 window.

document.querySelector('#show_trash_id').addEventListener('click', function(e) {
  console.log(this);
});
 <div id="show_trash_id" class="switch switch-xs">
   <input type="checkbox"/>
   <span class="slider round">
     <span class="text-on">ON</span>
     <span class="text-off">OFF</span>
   </span>
 </div>