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 无法正确注入事件对象。

相关新闻

主流 Agent 开发框架对比

主流 Agent 开发框架对比

AI Agent 开发框架哪家强?本文从 LangChain、AutoGen、CrewAI 到 Dify,全面拆解四大主流框架的核心概念、适用场景与选型策略,帮你选对轮子,少走弯路。 7.1 框架总览对比 2024~2026 年是 AI Agent 框架的爆发期。从早…

2026/10/28 10:40:35 阅读更多 →
HT32单片机核心外设实战:GPIO、定时器、串口与ADC开发指南

HT32单片机核心外设实战:GPIO、定时器、串口与ADC开发指南

1. 项目概述:从零上手HT32基础外设 最近在整理一个老项目的硬件方案,手头正好有几块Holtek的HT32系列开发板。说实话,刚开始接触时,感觉它有点像STM32的“远房亲戚”,但深入用下来,发现它在成本敏感型应用里…

2026/10/27 14:10:19 阅读更多 →
FPGA异步时钟无毛刺切换:Verilog实现与工程实践

FPGA异步时钟无毛刺切换:Verilog实现与工程实践

1. 从一次系统重启说起:为什么时钟切换不是简单的“二选一” 那天下午,我正在调试一块FPGA板卡上的多速率数据处理模块。系统需要根据外部传感器的数据速率,动态地在100MHz和25MHz两个工作时钟之间切换。我的第一版代码简单粗暴:用…

2026/10/23 9:29:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →