登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
资源区
›
代码
›
Web前端入门第 75 问:JavaScript 性能优化之事件委托( ...
Web前端入门第 75 问:JavaScript 性能优化之事件委托(事件代理)原理
[ 复制链接 ]
蚬蕞遂
2025-9-26 10:33:59
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
如今 Vue 大行其道,大部分开发场景直接使用 @click 就实现了事件绑定,可能都没思索过 JS 中的事件性能优化。
事件委托原理
事件委托 其主要是利用了事件冒泡这个特性。
以点击事件 click 为例:将事件绑定在父元素上,点击子元素会通过冒泡的方式触发父元素的点击事件。这种绑定事件的方式,就称之为 事件委托,也称为 事件代理。
示例
利用事件委托实现点击 span 元素输出 span 元素内容:
<ul >
div 内容
<li>第 1 个 li 第 1 个 span 内容</li>
<li>第 2 个 li 第 2 个 span 内容</li>
<li>第 3 个 li 第 3 个 span 内容</li>
<li>第 4 个 li 第 4 个 span 内容</li>
<li>第 5 个 li 第 5 个 span 内容</li>
<li>第 6 个 li 第 6 个 span 内容</li>
<li>第 7 个 li 第 7 个 span 内容</li>
<li>第 8 个 li 第 8 个 span 内容</li>
</ul>
复制代码
效果:
点击 div 和 li 元素都不会触发事件,点击 span 元素会在控制台输出元素内容。
优点
1、由于 JS 绑定的事件只有一个父元素,所以节省了内存。
2、无需针对每一个子元素绑定事件,所以减少了子元素的事件注册。
3、对于子元素的增删改不用再新注册事件,所以对子元素的操作要简单很多。
4、对于存在大量子元素的页面,由于减少了事件注册次数,所以可以提高页面性能。
缺点
既然事件委托那么有用,那么能不能直接将页面上所有的事件都委托到 body 元素上?
这想法很丰满,但显示很骨感啊,这种情况如果都绑定到最顶层的元素上,那么会导致所有的子元素都会事件冒泡,然后触发顶层元素的事件,这样反而无法做到性能优化,还造成了一些不必要的浪费,毕竟不是所有的子元素都需要响应事件!!
写在最后
性能优化这条路上,一直都存在各种话题,很多性能优化都是过犹不及,适当的场景用适当的方式才是最合理的。
代码编写并不是一蹴而就,很多时候,能实现功能就是好代码,至于性能,在一些小的需求场景,您写的代码可能都无法触发性能问题~~
坚持一个原则:不要过早优化。当我们的代码确实触发了性能问题,再考虑如何优化吧~~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
事件
Web
前端
门第
JavaScript
相关帖子
web框架——flask-异常处理/全局钩子/jinja2引擎
使用 swagger-typescript-api 在前端项目里生成请求代码
前端纯小白使用AI开发实战:一个免费的在线拼图工具Collaigo
Actix-Web完整项目实战:博客 API
VUE前端项目规范.md---大模型辅助开发使用约束
深入解析Oracle 10046事件与数据库初始化引导机制
SvelteKit 开发实战:拥抱 Web 标准 (Web Standards)
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
在前端项目中安全调用大模型 API 的实践,我是怎么做的?
五万字沥血事件 深度学习 事件 循环 事件传播 异步 脱离新手区 成为事件达人
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
web框架——flask-异常处理/全局钩子/jinja2引擎
1
914
求几少
2025-11-27
业界
使用 swagger-typescript-api 在前端项目里生成请求代码
0
991
电棘缣
2025-11-27
业界
前端纯小白使用AI开发实战:一个免费的在线拼图工具Collaigo
0
82
翁谌缜
2025-11-27
业界
Actix-Web完整项目实战:博客 API
0
510
馏栩梓
2025-12-01
科技
VUE前端项目规范.md---大模型辅助开发使用约束
2
990
丁若云
2025-12-01
安全
深入解析Oracle 10046事件与数据库初始化引导机制
0
848
搁胱
2025-12-02
业界
SvelteKit 开发实战:拥抱 Web 标准 (Web Standards)
0
967
岳娅纯
2025-12-02
业界
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
0
22
唯棉坜
2025-12-06
业界
在前端项目中安全调用大模型 API 的实践,我是怎么做的?
0
400
趣侮
2025-12-08
代码
五万字沥血事件 深度学习 事件 循环 事件传播 异步 脱离新手区 成为事件达人
0
167
福清婉
2025-12-09
回复
(1)
老僻贞
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
蚬蕞遂
4 天前
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845356
3934307807
991122
4
xiangqian
638210
5
宋子
9984
6
韶又彤
9999
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多