事件委托

事件委托是一种优化JavaScript事件处理的策略,通过在父元素上设置事件监听器,利用事件冒泡来处理子元素的事件。这种方法减少了事件处理程序的数量,提高了性能,并允许动态添加的元素依然能响应事件。此外,它还有助于防止内存泄漏。本文详细介绍了事件委托的工作原理,包括捕获阶段、目标阶段和冒泡阶段,并探讨了其在实际应用中的好处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件委托:
事件委托也叫事件代理,事件委托就是利用事件冒泡,只制定一个事件处理程序,就可以管理某一类型的所有事件

<body>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
            <li>555</li>
        </ul>
</body>
<script>
    let ul = document.querySelector('ul');
    let li = document.querySelector('li');
    ul.onclick = function (event) {
        event = event || window.event;//兼容所有浏览器
        let item = event.target;//event.target为当前点击的li
        alert(item.innerHTML)
    }
</script>

事件委托的好处:
1.减少事件数量,提高性能
2.预测未来元素,新添加的元素仍然可以触发该事件
3.避免内存外泄,在低版本的IE中,防止删除元素而没有移除事件而造成的内存溢出

js事件的3个阶段

捕获阶段:当我们在 DOM 树的某个节点发生了一些操作(例如单击、鼠标移动上去),就会有一个事件发射过去。这个事件从 Window 发出,不断经过下级节点直到触发的目标节点。在到达目标节点之前的过程,就是捕获阶段(Capture Phase)。事件由页面元素接收,逐级向下,到具体的元素。

目标阶段:当事件不断的传递直到目标节点的时候,最终在目标节点上触发这个事件,就是目标阶段

冒泡阶段:事件冒泡即事件开始时,由最具体的元素接收(也就是事件发生所在的节点),然后逐级传播到较为不具体的节点。跟捕获相反,具体元素本身,逐级向上,到页面元素(我们平时用的事件绑定就是利用的事件冒泡的原理)

在DOM标准事件模型中,是先捕获后冒泡。但是如果要实现先冒泡后捕获的效果,对于同一事件,监听捕获和冒泡,分别对应响应的处理函数,监听到捕获事件,先暂缓执行,直到冒泡事件被捕获后再执行捕获事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值