Vue 事件机制深度剖析:$event、e.target 与 e.currentTarget 的本质区别
Vue 事件机制深度剖析$event、e.target 与 e.currentTarget 的本质区别1.1 前言在 Vue 开发中我们经常需要处理 DOM 事件。当调用事件处理函数时我们通常希望访问原生 JavaScript 事件对象来获取更多的信息比如点击坐标、目标元素等。这就涉及到一个关键语法在 Vue 事件中传入 $event。同时理解事件对象中的 e.target 和 e.currentTarget 是掌握事件委托和冒泡机制的基础。1.2 基础用法如何正确传入 $event在 Vue 的模板语法中我们不需要手动调用event.stopPropagation()等方法而是将原生事件对象传递给方法即可。1.2.1 语法格式在方法名后直接拼接$event参数Vue 会自动将事件对象注入。1.2.2 代码示例div idapp button clickhandleClick(Action, $event)点击我/button /div script export default { methods: { handleClick(message, event) { console.log(message); // 输出 Action console.log(event); // 输出原生事件对象 } } } /script2.1 核心概念辨析e.target 与 e.currentTarget要理解它们的区别首先要明白事件传播冒泡的机制。在事件处理函数被触发时e.target和e.currentTarget指向的对象通常是不同的。2.1.1 e.currentTarget 的含义e.currentTarget指向的是当前绑定事件监听器的那个元素。换句话说它代表事件被附加到的 DOM 节点。2.1.2 e.target 的含义e.target指向的是实际触发事件的那个子元素。这就是说如果用户点击的是嵌套元素内部的一个按钮e.target将指向这个按钮而不是绑定了监听器的父容器。2.2 交互流程图事件触发时的变化为了更直观地理解我们可以通过 Mermaid 流程图来展示当点击子元素时e.target和e.currentTarget的变化过程。用户点击子元素 Button事件触发 e.targete.target 指向 Button 标签事件冒泡传播父容器接收事件触发绑定在父容器上的监听器函数执行中 e.currentTargete.currentTarget 指向 UL 标签3.1 场景演示父子元素嵌套让我们通过一个具体的 HTML 结构来验证上述概念。假设我们有一个父容器 UL里面包含多个 LI并且点击 UL 或 LI 都会触发函数。3.1.1 实现代码div idapp ul clicklogEvent liItem 1/li liItem 2/li liItem 3/li /ul /div script export default { methods: { logEvent(event) { console.log(e.target 标签名, event.target.tagName); console.log(e.currentTarget 标签名, event.currentTarget.tagName); console.log(-------------------); } } } /script3.1.2 执行结果分析当我们点击 LI 时输出结果如下e.target输出 LI 实际点击的对象e.currentTarget输出 UL 绑定了监听器的对象3.2 场景演示事件委托理解e.target和e.currentTarget的最大价值在于实现“事件委托”。事件委托允许我们将事件监听器绑定到父容器上而不是每个子元素上从而提高性能。3.2.1 逻辑判断通常我们在父元素监听点击事件后需要判断e.target是否为我们期望的元素。3.2.2 代码实现methods: { handleParentClick(event) { // 只有直接点击 li 时才执行逻辑 if (event.target.tagName LI) { console.log(点击了列表项 event.target.innerText); } // 如果点击 li 内部的 span通常不希望触发除非使用 e.target 直接匹配 } }4.1 总结与最佳实践在开发过程中灵活运用 $event、e.target 和 e.currentTarget 可以解决很多复杂交互问题。4.1.1 选择 e.currentTarget 的时机当你的监听器绑定在父元素上而你想要执行与父元素相关的逻辑或者需要在事件冒泡过程中统一处理所有子元素行为时应优先使用e.currentTarget。4.1.2 选择 e.target 的时机当你需要对被点击的具体元素进行差异化处理或者实现事件委托机制时必须使用e.target。4.1.3 注意事项在使用 Vue 指令如v-on时$event是一个保留字不要在方法参数中重命名它否则 Vue 无法正确注入事件对象。

相关新闻

FreeRTOS嵌入式实时操作系统:从核心原理到STM32/ESP32项目实战

FreeRTOS嵌入式实时操作系统:从核心原理到STM32/ESP32项目实战

1. 项目概述:为什么FreeRTOS值得你投入时间如果你正在玩STM32、ESP32或者GD32这类微控制器,并且感觉裸机编程(也就是一个while(1)大循环)越来越力不从心,那FreeRTOS就是你绕不开的下一站。它不是什么高深莫测的黑科技&…

2026/7/30 8:01:01阅读更多 →
FireMonkey动画开发:从弹跳小球到奔跑小人

FireMonkey动画开发:从弹跳小球到奔跑小人

1. 项目概述:FireMonkey动画开发入门十年前我第一次接触FireMonkey时,就被它的跨平台动画能力惊艳到了。作为Delphi开发者从VCL转向FMX的必经之路,动画系统是其中最令人兴奋的部分。不同于VCL时代需要手动处理GDI的繁琐,FireMonke…

2026/7/30 8:01:01阅读更多 →
C++析构函数深度解析:三种必须自定义的场景与RAII实践

C++析构函数深度解析:三种必须自定义的场景与RAII实践

1. 项目概述:为什么析构函数值得“深入理解”?在C的世界里,构造函数和析构函数这对“生死搭档”是面向对象编程的基石。如果说构造函数负责对象的“诞生”——分配资源、初始化状态,那么析构函数就负责对象的“善后”——清理资源…

2026/7/30 8:01:01阅读更多 →
图新说体积测量:从边界界定到填挖方计算的工程实践指南

图新说体积测量:从边界界定到填挖方计算的工程实践指南

第一次接触体积测量,很多人会陷入一个误区:以为只要导入数据、点击计算,就能得到精确结果。但真正做过工程的人都知道,体积测量的核心不是计算本身,而是如何准确界定计算边界、处理异常地形、验证结果可靠性。 最近深…

2026/7/30 15:21:17阅读更多 →
GPT-5.6与Claude Fable 5实战对比:6大场景下的AI模型性能评测

GPT-5.6与Claude Fable 5实战对比:6大场景下的AI模型性能评测

在实际项目选型中,面对多个声称具备强大能力的 AI 模型,仅凭官方宣传和基准测试分数往往难以做出可靠决策。真正的考验在于模型能否理解特定领域的上下文、处理复杂逻辑、生成符合要求的代码或内容,并且在多次交互中保持稳定。GPT-5.6 和 Cla…

2026/7/30 15:21:17阅读更多 →
FPGA内部寄存器与组合逻辑:时序分析与设计优化实践

FPGA内部寄存器与组合逻辑:时序分析与设计优化实践

FPGA 作为可编程逻辑器件的核心,其内部硬件电路主要由寄存器和组合逻辑两种基本单元构成。理解这两类电路的工作原理和配合方式,是掌握 FPGA 设计、时序分析和性能优化的基础。无论是实现简单的状态机还是复杂的数据通路,最终都会落实到寄存器…

2026/7/30 15:21:17阅读更多 →
碧蓝幻想Relink伤害统计插件:从数据新手到战斗大师的完整指南

碧蓝幻想Relink伤害统计插件:从数据新手到战斗大师的完整指南

碧蓝幻想Relink伤害统计插件:从数据新手到战斗大师的完整指南 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr-logs …

2026/7/30 15:21:17阅读更多 →
QGroundControl无人机地面站:从入门到精通的完整免费指南

QGroundControl无人机地面站:从入门到精通的完整免费指南

QGroundControl无人机地面站:从入门到精通的完整免费指南 【免费下载链接】qgroundcontrol Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows) 项目地址: https://gitcode.com/gh_mirrors/qg/qgroundcontrol QGroun…

2026/7/30 15:21:17阅读更多 →
i.MX6ULL、STM32MP135、T113-i三款工业级嵌入式核心板选型测试对比

i.MX6ULL、STM32MP135、T113-i三款工业级嵌入式核心板选型测试对比

选工业核心板这件事,我见过太多人一上来就问主频多少、几个核心,然后挑了个参数最强的,结果项目做一半发现文档不全、驱动不成熟、社区没人能问,最后悔不当初。处理器性能固然重要,但生态成熟度、文档完整性、社区活跃…

2026/7/30 15:19:17阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →