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

 更新时间:2018年06月07日 10:49:26   作者:考拉的墨尔本  
这篇文章主要介绍了JavaScript事件委托原理与用法,结合实例形式较为详细的分析了JavaScript事件流以及事件委托相关原理、用法与操作注意事项,需要的朋友可以参考下

本文实例分析了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.jb51.net/table/javascript_event

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript事件相关操作与技巧大全》、《JavaScript页面元素操作技巧总结》、《JavaScript操作DOM技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结

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

相关文章

  • JavaScript修改注册表实例代码

    JavaScript修改注册表实例代码

    这篇文章主要介绍了JavaScript修改注册表实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • JavaScript OOP类与继承

    JavaScript OOP类与继承

    JavaScript OOP类与继承实现代码,需要的朋友可以参考下。
    2009-11-11
  • ES6中的WeakMap和WeakSet特性和用途详解

    ES6中的WeakMap和WeakSet特性和用途详解

    在JavaScript的ES6版本中,引入了WeakMap和WeakSet这两种新的数据结构,与Map和Set相比,它们有一些特殊的特点和用途,使它们在处理内存泄漏问题、管理对象私有数据、处理对象的唯一性等场景中有显著的优势,本文将深入探讨WeakMap和WeakSet的特性和用途,一起看看吧
    2023-12-12
  • js面向对象编程之如何实现方法重载

    js面向对象编程之如何实现方法重载

    如何实现方法重载,涉及到三个问题:同名函数的调用、函数中特殊的参数arguments、如何利用arguments实现方法重载,需要的朋友可以参考下
    2014-07-07
  • 实现隔行换色效果的两种方式【实用】

    实现隔行换色效果的两种方式【实用】

    本文主要介绍了实现隔行颜色交替 鼠标经过高亮颜色的两种方式的具体实例,有助于理解和使用。方案一:纯CSS编写;方案二:js代码编写。需要的朋友可以参考下
    2016-11-11
  • JavaScript实现九宫格移动拼图游戏

    JavaScript实现九宫格移动拼图游戏

    这篇文章主要为大家详细介绍了JavaScript实现九宫格移动拼图游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 一个无限级XML绑定跨框架菜单(For IE)

    一个无限级XML绑定跨框架菜单(For IE)

    一个无限级XML绑定跨框架菜单(For IE)...
    2007-01-01
  • 无缝滚动的简单实现代码(推荐)

    无缝滚动的简单实现代码(推荐)

    下面小编就为大家带来一篇无缝滚动的简单实现代码(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 微信小程序实战教程之WXS语法详解

    微信小程序实战教程之WXS语法详解

    WXS是小程序的一套脚本语言,结合 WXML,wxs类似js和js又不一样,好多js语法能在js使用不能在wxs使用可以构建出页面的结构,这篇文章主要给大家介绍了关于微信小程序实战教程之WXS语法详解的相关资料,需要的朋友可以参考下
    2024-09-09
  • 微信小程序云开发如何使用npm安装依赖

    微信小程序云开发如何使用npm安装依赖

    这篇文章主要为大家详细介绍了微信小程序云开发如何使用npm安装依赖,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论