JavaScript之事件委托实例(附原生js和jQuery代码)
发布时间 - 2026-01-11 02:27:33 点击率:次事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作。

使用事件委托的优点
1、操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作
dom结构如下:
<ul id = "oUl"> <li class = "item"></li> <li class = "item"></li> <li class = "item"></li> <li class = "item"></li> <li class = "item"></li> </ul>
当li被点击时,打印该li的值。
在我们还没有学事件委托的时候我们会遍历所有li并给它们添加一个click事件,比如这样:
var aLi = document.getElementsByTagName('li');
for(var i = 0; i < aLi.length; i++) // 遍历li
aLi[i].addEventListener('click', function() { //给每个li添加事件
console.log(this.innerHTML);
});
学了事件委托之后js原生代码如下:
var oUl = document.getElementById('oUl');
oUl.addEventListener('click', function(ev) {
ev = ev||window.event;
var tag = ev.target; // 触发事件的对象保存在事件的target里面
console.log(tag.innerHTML);
})
jQuery代码如下:
$('#oUl').on('click', '.item', function() {
console.log($(this).html()); // this指向oUl中触发了click事件并且class为item的子元素
})
相比之下,事件委托只需要获取父元素并且不需要遍历li,效率提高了不少。
2、将事件委托给父元素后,动态创建(删除)的子元素不用重新绑定(解绑)事件,实现了元素与事件的同步更新
在以往的js事件监听中,用js动态创建的子元素是没有事件的,必须重新为它们绑定事件,但是用事件委托就不用这么麻烦了,不需要重新绑定事件依旧可以实现事件监听。
当然事件绑定也是有弊端的,因为它依赖于事件冒泡,如果不支持冒泡那么就不能实现事件绑定了,不过我认为这种几率还是不高的。还有就是会发生事件误判,比如页面中的button1和button2的作用是点击时弹出值,而button3的作用是点击是页面变色,这三个button的同一个事件实现功能不同,当你将click事件委托给它们共同的父元素那么就会出现事件误判。
所以我认为事件委托是发生在一个子集合的事件功能相同的情况下,如果不相同则不要使用事件委托,以免弄巧成拙。
在实际开发中,掌握事件绑定对于代码的规范性以及效率会有一定提高,总的来说利大于弊。
以上这篇JavaScript之事件委托实例(附原生js和jQuery代码)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js中的事件委托
# javascript事件监听与事件委托实例详解
# JavaScript事件委托原理与用法实例分析
# JS中的事件委托实例浅析
# JS实现为动态添加的元素增加事件功能示例【基于事件委托】
# js中的事件委托或是事件代理使用详解
# JS 事件绑定、事件监听、事件委托详细介绍
# JavaScript事件委托实现原理及优点进行
# 遍历
# 绑定
# 不需要
# 给大家
# 就会
# 还没有
# 是有
# 弄巧成拙
# 依赖于
# 有一定
# 我认为
# 可以通过
# 希望能
# 不高
# 弹出
# 就不能
# 不支持
# 因为它
# 只需要
# 可以实现
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
使用Dockerfile构建java web环境
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Bootstrap CSS布局之列表
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何用wdcp快速搭建高效网站?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何在自有机房高效搭建专业网站?
Laravel怎么在Controller之外的地方验证数据
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Laravel Docker环境搭建教程_Laravel Sail使用指南
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
制作旅游网站html,怎样注册旅游网站?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
如何用PHP工具快速搭建高效网站?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Android自定义控件实现温度旋转按钮效果
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel API资源类怎么用_Laravel API Resource数据转换
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel如何记录自定义日志?(Log频道配置)
php json中文编码为null的解决办法
如何快速登录WAP自助建站平台?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何彻底删除建站之星生成的Banner?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
怎么用AI帮你设计一套个性化的手机App图标?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Android 常见的图片加载框架详细介绍
进行网站优化必须要坚持的四大原则
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何实现一对一模型关联?(Eloquent示例)
如何基于云服务器快速搭建个人网站?
如何获取PHP WAP自助建站系统源码?
Python进程池调度策略_任务分发说明【指导】
php打包exe后无法访问网络共享_共享权限设置方法【教程】
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
奇安信“盘古石”团队突破 iOS 26.1 提权
如何快速查询域名建站关键信息?

