js中的事件委托

1、什么是事件委托?

​ 事件委托, 他还有一个名字叫做事件代理,是JavaScript中常用的绑定事件的常用技巧,顾名思义,事件代理即是把原本需要绑定在子元素的响应事件委托给父元素,让父元素担当事件监听的职务,

2、为什么要用事件委托?

简单来说就是:

  • 访问次数越多,引起浏览器重绘和重排次数就越多,延长整个页面交互就绪事件
  • 减少与dom操作的的交互次数,提高性能。

3、事件委托原理:

利用事件冒泡原理来实现,从事件从最深的节点开始,然后逐步向上传播事件。

例如:有这样的一个DOM树,ul>li>a,如果给最里面啊加一个click点击事件,那么这个事件就会一层一层的向外执行,执行顺序a>li>ul,都会冒泡到最外层的ul上,所以会触发,这就是事件委托。

4、实现代码

利用事件委托实现简单选项卡

  • 首先肯定是页面结构
  <div class="box" id="boxx"><ul><li><button flagIndex=0>A</button></li><li><button flagIndex=1>B</button></li><li><button flagIndex=2>C</button></li><li><button flagIndex=3>D</button></li></ul><div class="activeBox">A</div><div class="activeBox">B</div><div class="activeBox">C</div><div class="activeBox">D</div></div>
  • 原生的方法对于节点的获取以及处理
var active = document.querySelectorAll('.activeBox')
var box = document.getElementById('boxx')
  function act() {for (var i = 0; i < active.length; i++) {active[i].style.display = 'none'}}// 监听点击事件box.addEventListener('click', function (e) {act()//调用封装好的函数let index = e.target.getAttribute('flagIndex')//在dom节点中设置下标,active[index].style.display = 'block'//根据下标设置样式。}, false)
  • style样式
      * {margin: 0;padding: 0;}.box {margin: 5px;width: 400px;height: 300px;border: 3px solid #ccc;position: relative;top: 0;}ul {display: flex;}ul li {list-style: none;display: flex;flex: 1;}button {width: 100%;height: 60px;}button:hover {background-color: pink;}.activeBox {width: 100%;height: 240px;background-color: rgb(241, 177, 177);position: absolute;bottom: 0;display: flex;align-items: center;justify-content: center;display: none;}

最终实现效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254266.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料

本文整理了2023陕西省首台&#xff08;套&#xff09;重大技术装备产品项目申报条件&#xff0c;认定材料等相关内容&#xff0c;感兴趣的朋友快跟小编一起来看看吧&#xff01; 一、重点支持方向及领域 重点支持方向及领域&#xff1a;高档工业母机、电力装备、大型矿山和冶金…

Windows下怎么更改文件扩展名

Win10如何修改文件扩展名 1、首先&#xff0c;我们打开我们的电脑&#xff0c;然后我们双击电脑上的一个文件夹; 2、进入文件夹之后&#xff0c;我们可以看到一个文件&#xff0c;此时的文件后缀名是不显示的&#xff0c;win10系统默认的是不显示后缀名的; 3、我们点击工具…

文件的拓展名(后缀名)怎么快速修改

最近有很多朋友在问&#xff0c;如何快速改名&#xff0c;比如将多个文件的后缀名进行修改&#xff0c;该如何操作呢&#xff1f;不知道的宝贝们&#xff0c;下面请随小编一起来试试吧&#xff0c;希望能给大家带来帮助。 所需工具 文件素材若干 操作步骤 将需要修改的所有文…

【文章学习系列之模型】SCALEFORMER

本章内容 文章概况模型结构主要方法多尺度框架跨尺度标准化模型输入编码损失函数 实验结果消融实验跨尺度标准化自适应损失函数 总结 文章概况 《SCALEFORMER: ITERATIVE MULTI-SCALE REFINING TRANSFORMERS FOR TIME SERIES FORECASTING》是2023年发表于ICLR上的一篇论文。作…

chatgpt赋能python:Python中按下某个按键的实现方法

Python中按下某个按键的实现方法 Python是一种广泛应用于各种领域的高级编程语言&#xff0c;可以用于编写各种类型的应用程序和工具。其中&#xff0c;它在游戏开发方面有着广泛的应用。而在游戏开发过程中&#xff0c;按键响应是至关重要的一个组成部分。本文将带领读者了解…

【第二节】变量和简单的数据类型

本节将结束python当中的变量和一部分数据类型(字符串和数字),并且介绍一些对应的方法 变量 在上一节的最后我们打印出了hello world print(hello world!)这次我们使用下面的代码实现一样的功能 message = hello world! print(message)可以看到 打印结果一模一样,而我们…

关于VUE3的一些基础知识点笔记

关于VUE3的一些基础知识点笔记 VUE3 vue2与vue3的一个重要区别是vue2是选项式API&#xff08;composition API&#xff09;而vue3是组合式API&#xff08;option API&#xff09;。 组合式API就是所有逻辑都在setup函数中&#xff0c;使用ref、watch等函数来组织代码&#xff…

easyX实践上手操作小项目

easyX实践上手操作小项目 效果展示主菜单的装饰玩法介绍界面开始游戏界面制作团队界面排行榜界面注&#xff1a;main()函数拓展数据库小结 这里我们学习过easyX的基础知识后&#xff0c;看看是否能实践操作一下&#xff0c;制作一个属于自己的游戏界面呢&#xff1f; 基础知识…

Verilog初级教程(13)Verilog中的块语句

文章目录 前言正文串行语句并行语句并行块内包含串行块的情况块名称 往期文章回顾 前言 所谓的块语句&#xff0c;无非就是一组语句&#xff0c;例如在initial或者always中&#xff0c;使用begin…end或者fork…join包裹的语句&#xff0c;都可以称为块语句。块语句有两种&…

Verilog初级教程(11)Verilog中的initial块

文章目录 前言正文语法格式initial块是用来干什么的&#xff1f;initial块何时开始又何时结束&#xff1f;一个模块中允许有多少个initial块&#xff1f; 参考资料写在最后 前言 仿真中通常会依次执行一组Verilog语句。这些语句被放置在一个程序块中。在Verilog中主要有两种类…

Verilog初级教程(8)Verilog中的assign语句

博文目录 写在前面正文赋值语法reg类型变量赋值隐性连续赋值组合逻辑设计举例说明 参考资料交个朋友 写在前面 本系列相关博文链接&#xff1a; Verilog初级教程&#xff08;7&#xff09;Verilog模块例化以及悬空端口的处理 Verilog初级教程&#xff08;6&#xff09;Veril…

夏宇闻《Verilog数字系统设计教程》 - 第1章 Verilog的基本知识

第1章 Verilog的基础知识 1.1 硬件描述语言HDL 硬件描述语言&#xff08;HDL&#xff0c;hardware description language&#xff09;是一种用形式化方法来描述数字电路和系统的语言。 设计者使用HDL设计数字系统后&#xff0c;通过电子设计自动化工具&#xff08;EDA&#…

Verilog初级教程(12)Verilog中的generate块

文章目录 前言正文generate forgenerate ifgenerate case 参考资料本系列博文 前言 verilog中的generate块可以称为生成块&#xff0c;所谓生成&#xff0c;可以理解为复制。如果不太好理解&#xff0c;下面我们继续使用generate块。 generate块应用的场合通常是对模块进行批…

Verilog初级教程(17)Verilog中的case语句

文章目录 前言正文语法例子硬件原理图case与if-else有什么不同&#xff1f; 往期回顾参考资料及推荐关注 前言 case语句检查给定的表达式是否与列表中的其他表达式之一相匹配&#xff0c;并据此进行分支。它通常用于实现一个多路复用器。 如果要检查的条件很多&#xff0c;if…

Verilog初级教程(3)Verilog 数据类型

文章目录 前言正文变量可以取什么样的值&#xff1f;变量的取值意味着什么&#xff1f;主要的数据类型其他数据类型integertime / realtimereal例子 Verilog的字符串 写在最后 前言 这是本系列的第三篇博文&#xff0c;依然很基础&#xff0c;这个系列文章&#xff0c;主要是在…

Verilog初级教程(10)Verilog的always块

博文目录 写在前面正文语法什么是敏感列表&#xff1f;always块是用来干什么的&#xff1f;如果没有敏感列表怎么办&#xff1f;时序逻辑实例组合逻辑实例注意事项 参考资料 写在前面 由于刚毕业&#xff0c;又发生了很多事&#xff0c;在进入工作的准备期&#xff0c;就这样一…

verilog 入门教程

verilog 入门教程 1.1 什么是Verilog HDL? 1.2 Verilog的历史 1.3 Verilog的主要描述能力 2.1 Verilog-模块 2.2 Verilog-时延 2.3 Verilog-assign语句 2.4 Verilog-initial语句 2.5 Verilog-always语句 2.6 Verilog的结构化描述形式 2.7 Verilog-混合设计描述方式 2.8 Veri…

Verilog初级教程(14)Verilog中的赋值语句

文章目录 前言正文合理的左值过程性赋值&#xff08;Procedural assignment&#xff09;连续赋值过程连续性赋值 往期回顾 前言 何为赋值语句&#xff1f;即将值放到线网或者变量上&#xff0c;这种操作称为赋值&#xff0c;英文&#xff1a;assignment. 它有三种基本形式&…

嵌入式开发Verilog教程(二)——Verilog HDL设计方法概述

嵌入式开发Verilog教程&#xff08;二&#xff09;——Verilog HDL设计方法概述 前言一、Verilog HDL语言简介1.1 Verilog HDL语言是什么1.2 Verilog HDL设计复杂数字电路的优点1.2.1 传统设计方法——电路原理图输入法1.2.2 Verilog HDL设计方法与传统设计方法相比较的优势1.2…

嵌入式开发Verilog教程(三)——Verilog HDL基本语法汇总(上)

嵌入式开发Verilog教程&#xff08;三&#xff09;——Verilog HDL基本语法汇总&#xff08;上&#xff09; 前言一、简单的Verilog HDL模块1.1 Verilog HDL程序简单模块1.2 Verilog HDL程序模块结构1.3 Verilog HDL程序模块端口定义1.4 Verilog HDL程序模块内容 二、Verilog H…