javascript之事件代理/事件委托

事件代理与事件委托是同一个含义,它的定义是:

事件代理(Event Delegation)是一种利用事件冒泡机制的技术,通过将事件监听器绑定在父元素上,而非直接绑定在目标子元素上,从而实现对动态或大量子元素的事件管理。当子元素触发事件时,事件会冒泡到父元素,父元素通过判断事件的目标(event.target)来执行相应的逻辑。

原理:

事件代理基于DOM事件冒泡机制。当一个事件(如点击事件)在子元素上触发时,事件会从子元素向上冒泡到父元素,直至文档根节点。通过在父元素上监听事件,可以捕获所有子元素触发的事件,无需为每个子元素单独绑定监听器。

比如

html代码如下

html 复制代码
    <ul>
        <li>li1</li>
        <li>li2</li>
        <li>li3</li>
        <li>li4</li>
        <li>li5</li>
    </ul>

假如要给每个li标签设定事件,点击之后会输出标签里的内容,比如点击li2,输出li2

通过事件代理js代码如下

javascript 复制代码
 document.querySelector("ul").onclick = function(e)
        {
            console.log(e.target.innerText)
        }

这样,不用给每个li标签设置事件,就可以实现

这样做的好处是

减少内存消耗 :无需为大量子元素绑定独立的事件监听器,节省内存资源。
动态元素支持 :对新添加的子元素自动生效,无需重新绑定事件。
代码简洁:统一管理事件逻辑,减少重复代码。

相关推荐
圣殿骑士-Khtangc1 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
BigTopOne2 小时前
【ijkplayer】 硬解码流程
前端
kyriewen3 小时前
DeepSeek Harness开源第一天我就上手了——和Claude Code的差距比想象中大
前端·ai编程·deepseek
捡田螺的小男孩3 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒3 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端
90后的晨仔3 小时前
uni-app 路由跳转与页面导航 —— 终极详解(对标 iOS / Android / 鸿蒙三端原生)
前端
Heo4 小时前
大厂前端调试不能只会debugger
前端·javascript·面试
用户2181697049304 小时前
Flutter (十七) 网络请求
前端
cidy_984 小时前
React 19 + Vite 企业级前端项目:从零搭建到规范交付
前端
用户921080262864 小时前
如何把一张图片做成自定义复杂 UI 图标
前端