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 Math对象
Aug 13 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
纯JS实现动态时间显示代码
Feb 08 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
vue不通过路由直接获取url中参数的方法示例
Aug 24 Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
js中addEventListener()与removeEventListener()用法案例分析
Mar 02 Javascript
解决ant Design中Select设置initialValue时的大坑
Oct 29 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
js判断节假日实例代码
2017/12/27 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python将unicode转为str的方法
2017/06/21 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python issubclass 和 isinstance函数
2019/07/25 Python
python怎么对数字进行过滤
2020/07/05 Python
python else语句在循环中的运用详解
2020/07/06 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
市场部岗位职责范本
2015/04/15 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫