当前位置: 首页 > news >正文

说一下事件委托

1. 什么是事件委托

事件委托是指 将父元素的事件处理程序绑定在父元素上,而不是直接绑定在子元素上,通过 事件冒泡机制来管理子元素事件。

核心原理:事件冒泡(Event Bubbling)

  • 当子元素触发事件时,事件会向上冒泡到父元素

  • 父元素可以通过事件对象 event.target 判断事件来源

2. 传统绑定 vs 事件委托

传统绑定

const items = document.querySelectorAll('li');
items.forEach(item => {item.addEventListener('click', () => {console.log('点击了', item.textContent);});
});

问题:

  1. 子元素多时绑定大量事件,性能消耗大

  2. 动态生成的子元素,需要再次绑定事件


事件委托

const ul = document.querySelector('ul');ul.addEventListener('click', (event) => {if (event.target.tagName === 'LI') {console.log('点击了', event.target.textContent);}
});

优势:

  1. 少量绑定:只绑定父元素

  2. 支持动态元素:子元素动态增加也能响应事件

  3. 性能好:避免大量事件绑定

3. 事件委托使用条件

  1. 事件需要冒泡

    • click、keydown 等可以冒泡

    • 注意:focus、blur 默认不冒泡,需要用 focusin/focusout

  2. 父元素能覆盖所有目标子元素

    • 父元素必须存在于 DOM 中且包含子元素
  3. 需要区分事件源

    • 使用 event.target 判断触发事件的具体子元素

    • 如果子元素有多级嵌套,可用 event.target.closest(‘selector’)

4. 常见注意点

  1. 冒泡到 document 或 body

    • 父元素绑定过大,事件会冒泡很远,可能影响性能或产生副作用
  2. 阻止默认行为

    • 可以在委托事件里调用 event.preventDefault()
  3. 动态元素支持

    • 无需再次绑定事件,自动生效

总结

特性传统绑定事件委托
事件绑定数量子元素多 → 多次绑定只绑定父元素一次
动态元素支持不支持,需要重新绑定支持,自动生效
性能
适用场景子元素少、固定子元素多、动态生成

核心理解:

  • 事件委托 = 利用冒泡 + 父元素统一处理子元素事件

  • 性能优化 + 动态元素处理 + 代码简洁

http://www.xdnf.cn/news/1317187.html

相关文章:

  • Java 大视界 -- Java 大数据分布式计算在基因测序数据分析与精准医疗中的应用(400)
  • 【UEFI系列】ACPI
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • Spark03-RDD02-常用的Action算子
  • 在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
  • E2B是一个开源基础设施,允许您在云中安全隔离的沙盒中运行AI生成的代码和e2b.dev网站
  • Diamond基础2:开发流程之LedDemo
  • c_str()函数的详细解析
  • 简单的 VSCode 设置
  • (nice!!!)(LeetCode 每日一题) 837. 新 21 点 (动态规划、数学)
  • bash shell 入门
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • Rust:DLL 输出对象的生命周期管理
  • API生命周期10阶段
  • 原子操作及基于原子操作的shared_ptr实现
  • Baumer高防护相机如何通过YoloV8深度学习模型实现工作设备状态的检测识别(C#代码UI界面版)
  • 【C++】Windows 下 TCP接口超详介绍,如何实现一个TCP服务端和客户端
  • Windows 10共享打印机操作指南
  • 业务员手机报价软件免费领取——仙盟创梦IDE
  • 精美UI的单页网盘资源分享搜索页面 短剧搜索 自适应页面
  • 飞算JavaAI赋能高吞吐服务器模拟:从0到百万级QPS的“流量洪峰”征服之旅
  • IC验证 AHB-RAM 项目(一)——项目理解
  • AOP配置类自动注入
  • Git安装使用
  • Java增强for循环(小白友好版)
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • 【R语言】R语言矩阵运算:矩阵乘除法与逐元素乘除法计算对比
  • 7 索引的监控
  • 一文读懂[特殊字符] LlamaFactory 中 Loss 曲线图