currentTarget始终指向绑定事件监听器的元素,用于事件委托中准确操作监听容器而非触发子元素,与指向实际触发点的target严格区分。

currentTarget 是事件对象(Event)的一个只读属性,它始终指向**当前绑定事件监听器的那个元素**,也就是事件监听器实际挂载的目标节点。这和 target(触发事件的最深子元素)不同,尤其在事件冒泡场景中非常关键。
为什么需要 currentTarget?
当使用事件委托(比如给父元素绑定点击事件来处理多个子按钮)时,target 指向真正被点击的子元素(如某个 <button>),而 currentTarget 始终是那个绑了 addEventListener 的父元素。如果你需要操作的是监听器所在的容器,而不是触发点本身,就必须用 currentTarget。
基本用法示例
直接在事件回调函数中访问 event.currentTarget:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const parent = document.getElementById('container');
parent.addEventListener('click', function(event) {
console.log('触发点元素:', event.target); // 可能是子 span/button
console.log('监听器所在元素:', event.currentTarget); // 总是 #container
});
常见使用场景
-
事件委托中操作父容器:例如统一控制菜单栏的展开/收起,监听在
<nav>上,但需要修改nav自身的 class。 -
避免重复绑定多个相同逻辑的监听器:给列表父元素绑定一次 click,用
currentTarget获取容器,再结合target判断具体点击项。 -
动态添加/移除类名时保持上下文准确:比如切换按钮组的激活状态,监听在按钮组容器上,用
currentTarget确保操作的是整个组而非单个按钮。
注意与 target 的区别
假设 HTML 结构如下:
立即学习“Java免费学习笔记(深入)”;
<div id="box"> <button>点我</button> </div>
给 #box 绑定点击事件:
- 你点击了
<button>→event.target是button元素; -
event.currentTarget始终是div#box(因为监听器注册在这里); - 即使
button没有阻止冒泡,currentTarget也不会变成button—— 它只取决于监听器挂在哪。

















