【核心基础知识】3个场景的DOM事件处理

本文介绍了DOM事件处理中的防抖、节流和代理技术。防抖用于限制函数的频繁执行,例如在搜索框输入时避免过多的请求。节流则确保在一定时间内只调用一次函数,适用于滚动事件处理。事件代理通过在父元素上绑定事件,高效处理大量子元素的事件,减少了内存和执行时间。文章还探讨了事件触发的三个阶段和注意事项,如DOM0和DOM2事件监听的区别。
摘要由CSDN通过智能技术生成

一、防抖

在一段时间内能够多次触发并且在最后一次触发才是能够得到完整结果的事件可以使用防抖来防止事件处理函数的多次执行以提升体验和性能。

比如:有一个搜索输入框,为了提升用户体验,希望在用户输入后可以立即展现搜索结果,而不是每次输入完后还要点击搜索按钮。一种实现方式应该很容易想到,那就是绑定 input 元素的input事件,然后在监听函数中发送 AJAX 请求。

这样的实现很容易造成性能问题。比如一个词需要输入四次那么就会发送四次ajax请求。其实只有最后一次才是用户想要输入的完整内容,前面三次的查询都会被浪费掉,浪费了网络带宽和服务器资源。这个时候就可以考虑使用防抖了。

简单的防抖可以使用settimeout实现。在实现防抖时如何实现:1、参数和返回值如何传递?,2、防抖化之后的函数是否可以立即执行?,3、防抖化的函数是否可以手动取消?。这是更复杂的防抖需求了,为了实现这些需求,写出了如下代码。

首先将原函数作为参数传入 debounce() 函数中,同时指定延迟等待时间,返回一个新的函数,这个函数包含 cancel 属性,用来取消原函数执行。flus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空的代码

创作不易,您的支持是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值