千家信息网

javascript中事件监听与事件委托怎么实现

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了javascript中事件监听与事件委托怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript中事件监听与事件委托怎么实现文章都会有
千家信息网最后更新 2026年11月02日javascript中事件监听与事件委托怎么实现

这篇文章主要介绍了javascript中事件监听与事件委托怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript中事件监听与事件委托怎么实现文章都会有所收获,下面我们一起来看看吧。

事件监听与事件委托

在js中,常用到element.addEventListener()来进行事件的监听。但是当页面中存在大量需要绑定事件的元素时,这种方式可能会带来性能影响。此时,我们可以用事件委托的方式来进行事件的监听。

每个事件都经历三个阶段

  • 捕获

  • 到达目标

  • 冒泡

事件委托需要用到事件的冒泡,冒泡就是事件发生时,上层会一层一层的接收这个事件。

如下页面结构:

  

当点击按钮,首先button接收到事件,然后向上层冒泡,接着id="div1"接收到事件,接着是id="div2",一直到达document的顶层。

所以可以添加一个事件处理器到父级,由他接收所有子节点的事件信息。这就是事件委托。

事件监听与事件委托性能比较

通过构建若干个button元素,并为其绑定事件监听器来比较事件监听与事件委托的性能。

1.构建若干个button元素,并添加到body中

      

此时页面生成了100个按钮,id为0到99,class为'btn';fragment是一个文档片段,相比较下面这种代码的好处是

for(var i = 0;i<100;i++){  var btn=document.createElement('button');  body.appendChild(btn);}

前者页面只重排一次,后者页面重排了100次;所以若遇到大模块添加dom时,最好使用fragment

2.为button绑定事件监听器,并设置时间戳

var btn = document.querySelectorAll('.btn');var date1 = new Date();for (var i = 0; i < btn.length; i++) {    (function(i) {      btn[i].addEventListener('click', function() {        console.log(i);      });    })(i)}

3.给body绑定click事件,实现事件的委托

var date2 = new Date();body.addEventListener('click', function(e) {    var element = e.target;    if (element.className == 'btn') {      console.log(element.id);    }})var date3 = new Date();

下面我们来通过时间戳分析一下这两种方式的性能。

console.log(date2 - date1);console.log(date3 - date1);

通过改变button的数量,得到以下数据(单位:ms):

在360兼容模式下:

  • 当button数量为100时,平均为 6 0

  • 当button数量为400时,平均为 20 0

  • 当button数量为1000时,平均为 48 0

在新版谷歌下:

  • 当button数量为1000时,平均为 3 0

可见当页面中有大量元素需要绑定事件时,并不是所有的事件都会被触发,而这时对所有需要监听的元素都绑定事件处理器无疑是要花费代价的,而通过事件委托的方式可以很好的解决性能问题,不需要为每个元素都绑定事件监听器。但是要写一些逻辑代码来判断事件源。所以,如果你的web项目对性能要求极为苛刻,事件委托也不失于一种优雅的选择

关于"javascript中事件监听与事件委托怎么实现"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"javascript中事件监听与事件委托怎么实现"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

事件 委托 监听 元素 性能 页面 数量 按钮 方式 监听器 知识 代码 内容 处理器 就是 时间 篇文章 处理 苛刻 优雅 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 湖北九亚互联网络科技有限公司 互联网和科技技术 互联网科技公司华为 互联网属科技 厦门中拓互联网络科技有限公司 港股互联网科技股 金融科技 互联网金融 有马互联网科技 贷财互联网科技 金融科技和互联网金融 成都玖崟互联网科技有限公司乐商圈怎么样 重庆互联网医院沙龙医盟信息科技 浙江互联网科技研学营 科技互联网海报 互联网科技圈年度人物 黑科技 体验场景 互联网大会 半导体是互联网高科技吗 风投北京互联网科技 北京品多多互联网科技有限公司 深圳市人人互联网科技有限公司 互联网金融 金融科技 智网互联网科技 美国互联网前沿科技 中化能源互联网科技招聘 荆州市昕露互联网络科技有限公司 华夏恒生科技与互联网科技 工业互联网展湾科技股份有限公司 西安有哪些互联网高科技企业 保山浩联互联网科技有限公司
0