JavaScript事件委托实现原理及优点进行


Posted in Javascript onAugust 29, 2020

1、什么是事件委托?

事件委托就是利用冒泡的原理,将事件加到 父元素 或 祖先元素上,触发执行效果。

例:在 document 中绑定 click 事件,当 click 的对象为 按钮 btn 时,弹框显示 按钮 btn的值

<body>
<button id="btn" value="嘿嘿">哈哈</button>
<script>
 window.onload=function () {
  let btn=document.getElementById("btn")
  document.onclick=function (e) {
   // console.log(e.target)
   if(e.target===btn){
    alert(btn.value)
   }
  }
 }
</script>
</body>

JavaScript事件委托实现原理及优点进行

2、事件委托的优点

(1)可以提高 JS 性能

例:在 ul 上创建 100 个 li,点击每个 li 都要弹框显示该 li 的 value

传统写法:在每个 li 上都绑定 onclick 事件,并触发 alert 事件

事件委托:在 document 上绑定 onclick 事件,当触发 onclick 事件后,判断是不是 <li> 标签,如果是,则 alert <li> 标签的值。

(2)可以动态添加 DOM 元素,不需要因为元素的变动而修改事件绑定。

3、事件委托需要注意的地方

事件委托绑定的元素,最好是被监听元素的父元素,如 <li> 上面的 <ul>、<tr> 上面的 <table> 等。

因为 事件冒泡 的过程也要耗时,越接近顶层,事件的「事件传播链」就越长,也就越耗时。

4、事件冒泡 和 事件捕获

JavaScript事件委托实现原理及优点进行

如图,事件冒泡是从子元素向父元素传递事件,一层一层,事件委托就是利用了冒泡原理;事件捕获是从 DOM 最高层对象一层一层往子元素传播。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
老鱼 浅谈javascript面向对象编程
Mar 04 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
JavaScript对象之深度克隆介绍
Dec 08 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
实现React单页应用的方法详解
Aug 02 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
微信小程序商品详情页底部弹出框
Nov 22 Javascript
js实现带有动画的返回顶部
Aug 09 Javascript
JS如何判断对象是否包含某个属性
Aug 29 #Javascript
JS获取当前时间戳方法解析
Aug 29 #Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 #Javascript
JS访问对象两种方式区别解析
Aug 29 #Javascript
js在HTML的三种引用方式详解
Aug 29 #Javascript
toString.call()通用的判断数据类型方法示例
Aug 28 #Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 #Javascript
You might like
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP文件操作实例总结
2016/09/27 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
python中defaultdict的用法详解
2017/06/07 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python程序慢的重要原因
2020/09/04 Python
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
求职简历自荐信范文
2013/10/21 职场文书
医学院学生求职简历的自我评价
2013/10/24 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
建筑工地标语
2014/06/18 职场文书
课外活动总结范文
2014/07/09 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书