当前位置: 首页 > 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.dtcms.com/a/335978.html

相关文章:

  • Qt——主窗口 mainWindow
  • Django3 - 建站基础知识点总结
  • 【JAVA 核心编程】面向对象中级:封装与访问控制
  • 获取IPv6地址的三种方式
  • 【Git系列】如何从 Git 中删除 .idea 目录
  • Rust:实现仅通过索引(序数)导出 DLL 函数的功能
  • MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战
  • 学习Stm32 的第一天
  • 基于RK3588的微电网协调控制器:实现分布式能源的智能调控与优化运行
  • git stash临时保存工作区
  • 因果知识图谱:文本预处理的革命性突破
  • pytest中使用loguru的问题及解决
  • CF2121C Those Who Are With Us
  • Week 12: 深度学习补遗:RNN与LSTM
  • Vue 与 React 深度对比:设计哲学、技术差异与应用场景
  • Zemax 中的透镜设计 - 像差理论
  • Python | 解决 matplotlib 中文乱码
  • CentOS7安装部署GitLab社区版
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • 深入浅出全面理解贝叶斯框架(Bayesian Framework)
  • jinja2模板引擎全面解析
  • Python3字符串全面指南:从基础操作到40个内建函数实战
  • Go语言并发编程 ------ 锁机制详解
  • 深入理解 uni-app 页面导航:switchTab、navigateTo、redirectTo、reLaunch 与 navigateBack
  • 2.4 双向链表
  • QUIC浅析
  • 流浪循环 全DLC(Rogue Loops)免安装中文版
  • 超市电商销售分析项目:从数据分析到业务决策
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十一节:网关安全-对称与非对称加密
  • PHP静态类self和static用法