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 AjaxQueue改进步骤
Oct 06 Javascript
给js文件传参数(详解)
Jul 13 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
使用JQuery在线制作ppt并在线演示源码特效
Sep 08 Javascript
在js中实现邮箱格式的验证方法(推荐)
Oct 24 Javascript
Html5+jQuery+CSS制作相册小记录
Dec 30 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
Mar 29 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 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
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php实现分页工具类分享
2014/01/09 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
Javascript Global对象
2009/08/13 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Python进程间通信用法实例
2015/06/04 Python
python中zip()方法应用实例分析
2016/04/16 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python 函数基础知识汇总
2018/03/09 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
用python实现名片管理系统
2020/06/18 Python
美的官方商城:Midea
2016/09/14 全球购物
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
我有一个梦想演讲稿
2014/05/05 职场文书
公司租房协议书
2014/10/14 职场文书
2014年保管员工作总结
2014/11/18 职场文书
结婚典礼主持词
2015/06/29 职场文书
车辆挂靠协议书
2016/03/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android