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 相关文章推荐
jquery nth-child()选择器的简单应用
Jul 10 Javascript
jquery动态加载图片数据练习代码
Aug 04 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
javascript数组操作总结和属性、方法介绍
Apr 05 Javascript
jQueryUI Datepicker组件设置日期高亮
Oct 13 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
Vue服务器渲染Nuxt学习笔记
Jan 31 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
JS 数组基本用法入门示例解析
Jan 16 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 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
在smarty中调用php内置函数的方法
2013/02/07 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python中的函数作用域
2018/05/07 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
艺术专业大学生自我评价
2013/09/22 职场文书
儿科护士实习自我鉴定
2013/10/17 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
竞选村长演讲稿
2014/04/28 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
个人年终总结开头
2015/03/06 职场文书
大学生见习总结报告
2015/06/24 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL