经典面试题分析——原生JS如何实现事件委托

简介: 笔记

1. 什么是事件委托


官方文档


事件委托就是利用事件冒泡,指定一个事件处理程序,就可以管理某一类型的所有事件。———— JS高程

举个例子


我们将快递寄到公司,但是可能快递到的时候,我们人却没在,便可以委托前台小姐姐代收。

第一:现在委托前台的同事是可以代为签收的,即程序中的现有的dom节点是有事件的

第二,新员工也是可以被前台MM代为签收的,可能人还没到,快递先到了,即程序中新添加的dom节点也是有事件的3.png


2. 实现事件委托(第一步,基本结构)


<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1>原生JS实现事件委托</h1>
    <h2>什么是事件委托?</h2>
    <h3>事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。———— JS高程</h3>
    <ul id="ul">
        <li>0</li>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <button id="btn">点我添加一个li</button>
</body>
</html>
  • 首先要为现有li元素绑定事件
  • 新增加的li也要绑定事件


3. 编写一个添加节点的方法先


 // 为按钮绑定点击事件
  let btn = document.getElementById('btn');
  btn.onclick = function () {
      let li = document.createElement('li');
      // 新增li的内容为ul当前子元素的个数
      li.textContent = ul.children.length;
      ul.appendChild(li);
  }

4. 实现事件委托


  • 原理其实很简单,将事件先绑定到
let ul = document.getElementById("ul");
    ul.onclick = function (event) {
        event = event || window.event;
        let target = event.target;
        // 获取目标元素
        if (target.nodeName == 'LI') {
            alert(target.innerHTML);
        }
    }
目录
相关文章
|
10天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
13天前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
33 5
|
2月前
|
JavaScript
原生js实现复选框(全选/全不选/反选)效果【含完整代码】
原生js实现复选框(全选/全不选/反选)效果【含完整代码】
43 1
|
10天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
3月前
|
前端开发 JavaScript 索引
|
2天前
|
JavaScript 前端开发 测试技术
「一劳永逸」送你21道高频JavaScript手写面试题(上)
「一劳永逸」送你21道高频JavaScript手写面试题
19 0
|
6天前
|
JavaScript 前端开发 API
框架分析(3)-Vue.js
框架分析(3)-Vue.js
|
10天前
|
JavaScript
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
|
26天前
|
JavaScript 前端开发
js开发:请解释什么是事件委托(event delegation),并给出一个示例。
事件委托是JavaScript中优化事件处理的技术,通过绑定事件处理器到共享的父元素,利用事件冒泡机制来处理子元素的事件。这种方法能提升性能、简化代码并降低内存消耗。示例展示了如何在父元素上监听`click`事件,然后通过`event.target`识别触发事件的具体子元素(如`&lt;li&gt;`),实现对动态生成列表项的点击事件处理。
|
1月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
90 0