JavaScript事件委托原理与用法实例分析


Posted in Javascript onJune 07, 2018

本文实例分析了JavaScript事件委托原理与用法。分享给大家供大家参考,具体如下:

在日常中,我们可能会听到事件委托这样的概念,有些同学可能对事件委托已经很了解了,也有些同学可能只是听过事件委托,只是会简单的使用,但是对于事件委托的原理不怎么知道。所以该博文会解释一下原生js的事件委托的原理,为什么会有事件委托,为什么可以这样用事件委托等等问题。

1. js中的事件流

在解析事件委托之前,我们先回顾一下js中的事件流,即冒泡和捕获。

① .冒泡:当下级节点触发某个事件的时候,该事件会逐级向上触发上级节点的同类事件。

② .捕获:和冒泡类似,只不过事件的顺序相反。即是从上级节点传递到下级节点

2. 事件委托原理

事件委托就是基于js的事件流产生的,事件委托是利用事件冒泡,将事件加在父元素或者祖先元素上,触发该事件。

<body>
  <div id="myDiv">
    <input type="button" value="按钮1" id="btn1">
    <input type="button" value="按钮2" id="btn2">
    <input type="button" value="按钮3" id="btn3">
  </div>
</body>
<script type="text/javascript">
  document.getElementById("myDiv").onclick=function(e){
    e=window.event||e;
    var btnId=e.target.id;
    switch(btnId){
      case "btn1":
        console.log("按钮1");
      break;
      case "btn2":
        console.log("按钮2");
      break;
      case "btn3":
        console.log("按钮3");
      break;
    }
  }
</script>

上面的代码就是一个典型的事件委托案例。利用的原理就是事件冒泡,将事件加载父元素上,通过event参数来区别按钮的不同

3. 总结

通过对上面事件委托代码的观察,我们可以很容易得出事件委托的好处:

① .减少页面绑定事件数量,由于页面事件绑定数量越多,页面执行性能越差,所以事件委托可以提高页面的性能

② .事件委托可以灵活的处理子节点动态变化的场景,无论子节点增加还是减少,事件都无需重新绑定

PS:关于javascript事件说明可参考本站javascript事件与功能说明大全:http://tools.3water.com/table/javascript_event

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript 对象定义方法 简单易学
Mar 22 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
Jan 02 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
jQuery实现图片左右滚动特效
Apr 20 Javascript
详解iframe与frame的区别
Jan 13 Javascript
Js apply方法详解
Feb 16 Javascript
js实现返回顶部效果
Mar 10 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
4个顶级开源JavaScript图表库
Sep 29 Javascript
微信小程序实现禁止分享代码实例
Oct 19 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 #jQuery
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 #Javascript
AngularJS 前台分页实现的示例代码
Jun 07 #Javascript
浅谈PDF.js使用心得
Jun 07 #Javascript
vue better scroll 无法滚动的解决方法
Jun 07 #Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 #Javascript
JavaScript 正则命名分组【推荐】
Jun 07 #Javascript
You might like
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
JS原型链怎么理解
2016/06/27 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
webpack独立打包和缓存处理详解
2017/04/03 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Django Admin实现上传图片校验功能
2016/03/06 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
函授本科毕业生自我鉴定
2013/10/16 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
2014年民警工作总结
2014/11/25 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
士兵突击观后感
2015/06/16 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
导游词之唐山景点
2019/12/18 职场文书
win10下go mod配置方式
2021/04/25 Golang
Django操作cookie的实现
2021/05/26 Python
SQLServer中exists和except用法介绍
2021/12/04 SQL Server