JS事件委托使用详解

这次给大家带来JS事件委托使用详解,JS事件委托使用的注意事项有哪些,下面就是实战案例,一起来看一下。

事件委托(也叫事件代理),其实这个问题也简单,要想弄明白事件委托,我们先要把事件冒泡的机制搞清楚。举个事件冒泡的例子:

  • 点击
var ul=document.getElementsByTagName('ul')[0]; var li=document.getElementsByTagName('li')[0]; ul.addEventListener('click', function(){ alert('我是ul,我被点击了'); }, false); li.addEventListener('click', function(){ alert('我是li,我被点击了'); }, false);

登录后复制

在这段代码中,当我们点击li的时候出发了li的click事件,但是在这时,ul的click事件也被触发了,这就是事件的冒泡。搞明白这个之后,我们就可以来说事件委托了,既然事件能从子元素(li)冒泡的父元素(ul)身上,那么我们就可以给ul自己加一个click事件,把所有li的事件都委托给了我们的父级(ul)身上,可能到这里有些朋友还是不明白这个事件委托到底有什么用,我们在举一个事件委托的实例来说明一下:

  • 点击1
  • 点击2
  • 点击3
  • 点击4
  • 点击5
//使用事件委托的代码 var ul=document.getElementsByTagName('ul')[0]; ul.addEventListener('click', function(e){ alert(e.target.innerHTML); }, false); //不使用事件委托,循环给li添加click事件 var li=document.getElementsByTagName('li') for(var i=0;i<li.length;i++){ li[i].onclick=function(){ alert(this.innerHTML); } }

登录后复制

我们以上代码把事件委托给了ul,只给ul增加点击事件,在浏览器中运行点击对应的li会弹出li对应的innerHTML,这个function(e){};中的e这个参数实际上就是当前我们点击li时,系统传给我们的一些事件信息,e.target实际上指的就是当前我们点击的这个li,在这里我们每次弹出的都是当前点击对象的innerHTML,这就是一个简单的事件委托的案例。

而事件委托对于我们优化代码意义是非常大的,我们都知道,频繁的dom操作是非常耗费性能的,现在ul里边是5个li,我们假如不用事件委托实现上面代码所作的事情,就需要用for循环,给每个li都写一个click事件,这样一来dom操作就比较多了,如果是10个li呢,100个甚至更多呢,单不说dom操作影响的性能,li过多for循环自身就会占用大量的事件。如果利用事件委托,既避免了for循环耗费的性能,又省去了繁多的dom操作耗费的性能。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Vue实现动态刷新Echarts组件

在bootstrap中使用selectpicker实现下拉框

url、href、src在JS中的使用

以上就是JS事件委托使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2764681.html

(0)
上一篇 2025年3月8日 10:34:37
下一篇 2025年3月6日 08:56:01

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jquery中filter()方法使用详解

    这次给大家带来jquery中filter()方法使用详解,jquery中filter()方法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 定义和用法 filter() 方法返回符合一定条件的元素。 该方法让您规定一个条件。不符合条…

    编程技术 2025年3月8日
    200
  • p5.js实现斐波那契螺旋动画步骤详解

    这次给大家带来p5.js实现斐波那契螺旋动画步骤详解,p5.js实现斐波那契螺旋动画的注意事项有哪些,下面就是实战案例,一起来看一下。 效果如下: 主要方法 translate() rotate() arc() 斐波那契螺旋 斐波那契螺旋线…

    2025年3月8日
    200
  • JS实现摩天轮抽奖

    这次给大家带来JS实现摩天轮抽奖,JS实现摩天轮抽奖的注意事项有哪些,下面就是实战案例,一起来看一下。  效果图: 图片素材 : 代码如下,复制即可使用: 幸运抽奖页面 /*CSS代码*/ *{ padding:0; margin:0; }…

    2025年3月8日
    200
  • nodejs搭建本地服务器并处理跨域

    这次给大家带来nodejs搭建本地服务器并处理跨域,nodejs搭建本地服务器并处理跨域的注意事项有哪些,下面就是实战案例,一起来看一下。 最近把以前用jquery写的一个小demo拿出来运行的,刚开始的时候忘了开启本地服务导致控制台一直报…

    2025年3月8日
    200
  • JS回调函数实例详解

    这次给大家带来JS回调函数实例详解,使用JS回调函数的注意事项有哪些,下面就是实战案例,一起来看一下。 在说回调函数之前,不妨先看一段代码,相信有点js基础的同学都能明白他的含义: document.getElementById(‘demo…

    编程技术 2025年3月8日
    200
  • JS给动态添加元素增加事件(附代码)

    这次给大家带来JS给动态添加元素增加事件(附代码),JS给动态添加元素增加事件的注意事项有哪些,下面就是实战案例,一起来看一下。 我们在日常开发中有时会通过js创建一些元素,但是如果使用原始的for循环给创建的节点添加事件的方法往往行不通:…

    2025年3月8日
    200
  • 需要遍历不规则多维数组时应怎么写JS

    这次给大家带来需要遍历不规则多维数组时应怎么写JS,需要遍历不规则多维数组时写JS的注意事项有哪些,下面就是实战案例,一起来看一下。 直接进入正文: 我们有时候处理数据,可能会遇到一些不规则(无法预料的数据结构),那么拿到这种数据我们如何进…

    2025年3月8日
    200
  • JS+PHP动态添加类

    这次给大家带来JS+PHP动态添加类,JS+PHP动态添加类的注意事项有哪些,下面就是实战案例,一起来看一下。 1.JAVASCRIPT: a. 代码: var a = function(){}var my_a = new a()my_a.…

    编程技术 2025年3月8日
    200
  • PHP后期静态绑定分析使用详解

    这次给大家带来PHP后期静态绑定分析使用详解,PHP后期静态绑定分析使用的注意事项有哪些,下面就是实战案例,一起来看一下。 基础知识 1. 范围解析操作符 (::) 可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。 self,…

    编程技术 2025年3月8日
    200
  • p5.js实现烟花绽放效果

    这次给大家带来p5.js实现烟花绽放效果,p5.js实现烟花绽放效果的注意事项有哪些,下面就是实战案例,一起来看一下。 之前看过一篇文章,使用processing制作烟花特效。效果如下 fireworks 网上调查了一圈了,发现proces…

    2025年3月8日
    200

发表回复

登录后才能评论