谁触发了事件指向谁,谁绑定了事件指向谁
在前端开发中,e.target 和 e.currentTarget 是事件对象(Event)中两个常用的属性,它们的主要区别在于指向的元素不同。
| 属性 | 指向 | 特点 |
|---|---|---|
| e.target | 触发事件的具体元素(事件源头) | 冒泡时始终是最内层实际被点击的元素 |
| e.currentTarget | 绑定事件监听器的元素 | 与 this 相同,始终是绑定事件的元素,不受冒泡影响 |
假设 HTML 结构如下:
<div id="outer" style="padding: 50px; background: pink;">
外层元素
<div id="inner" style="padding: 30px; background: lightblue;">
内层元素
</div>
</div>
JS 代码:
const outer = document.getElementById('outer');
outer.addEventListener('click', function(e) {
console.log('e.target:', e.target.id); // 实际点击的元素
console.log('e.currentTarget:', e.currentTarget.id); // 绑定事件的元素(outer)
console.log('this:', this.id); // 与 currentTarget 相同(outer)
});
| 属性 | 值 |
|---|---|
| e.target | inner(实际触发事件的元素) |
| e.currentTarget | outer(绑定事件的元素) |
| this | outer |
| 属性 | 值 |
|---|---|
| e.target | outer |
| e.currentTarget | outer |
| this | outer |