e.target指向用户实际点击的最底层DOM元素,this指向绑定事件监听器的元素;事件委托中必须用e.target获取触发目标,配合closest()精准匹配,而this始终为委托容器。

e.target 指的是用户真正点击(或触发事件)的那个最底层 DOM 元素;this 指的是你调用 addEventListener 时绑定事件的那个元素。
e.target 始终指向“被点中的那个”
不管事件监听器绑在父级还是祖级元素上,只要用户点到了某个子元素,e.target 就是它。比如:
- 一个
<ul>绑了 click 事件,里面三个<li> - 你点中第二个
<li>,e.target就是那个<li> - 哪怕
<li>自己没绑事件,也照样能捕获到——靠的是事件冒泡 +e.target
this 始终指向“绑了事件的那个”
this 不随点击位置变化,只取决于你在哪个元素上调用了 addEventListener:
- 写的是
document.querySelector('ul').addEventListener(...)→this就是<ul> - 写的是
btn.addEventListener(...)→this就是那个<button> - 箭头函数里
this会丢失绑定,直接指向外层作用域,所以事件处理中慎用箭头函数
什么时候两者相同?
只有当用户点击的元素,恰好就是绑定事件的那个元素时,e.target === this 才成立:
立即学习“Java免费学习笔记(深入)”;
- 给
<div class="card">绑事件,又刚好点在<div>的空白区域 → 相等 - 点里面一个
<span>或<i>→e.target是子元素,this还是<div>,不等
为什么 e.target 更适合做交互判断?
真实业务中,你往往需要知道“用户到底点了哪个按钮、哪个图标、哪行数据”,而不是“整个容器被点了”:
- 删除某条列表项?靠
e.target.classList.contains('delete')判断是不是删按钮 - 展开/收起某个卡片?检查
e.target是否为折叠图标,而非整个卡片 - 事件委托场景下,
this几乎没用,e.target是唯一可靠依据


















