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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
DWZ table的原生分页浅谈
Mar 01 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
React Native 混合开发多入口加载方式详解
Sep 23 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 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
php4的彩蛋
2006/10/09 PHP
php 常用字符串函数总结
2008/03/15 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php实现json编码的方法
2015/07/30 PHP
mouse_on_title.js
2006/08/25 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
javascript如何创建对象
2016/08/29 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
军训自我鉴定
2013/12/14 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
网吧消防安全责任书
2014/07/29 职场文书
八项规定整改方案
2014/10/01 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书