javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js事件委托

JavaScript必会技能之事件委托详解

作者:勇宝趣学前端

这篇文章主要介绍了JavaScript必会技能之事件委托的相关资料,事件委托是一种优化网页性能的技术,通过利用事件冒泡机制,在父元素而非每个子元素上绑定事件处理程序,文中通过代码介绍的非常详细,需要的朋友可以参考下

什么是事件委托

事件委托也叫事件代理,代理一词很好理解了。就是把自己的事情委托给另一个人去做,打个比方,比如拿快递,像在学校中一般快递都是寄到学校的各个快递点的,学生下课后到指定的地点进行取件,我们把收快递的这个事件委托给快递点,这就是一个事件委托,当然了如果能够送到宿舍最好了O(∩_∩)O哈哈~

应用场景一:不改变 DOM 结构

功能需求

事件委托的出现肯定是有他的道理的,举个例子,如果我们想要实现这么一个需求:

这里简单用代码实现一下:

  1. addEventListener 第三个参数可以控制事件冒泡和事件捕获(onclick不可以),默认为 false (冒泡), true (捕获)
  2. 事件处理 this与onclick一样
  3. 可以为某个元素绑定多个事件而不会覆盖之前绑定的处理程序 (按照顺序执行,onclick不可以)

功能已经实现,但是设想一下如果有 10000 个li标签,那么我们就需要遍历 10000 次,给每一个 li 添加点击事件,每一个函数就是一个对象,每个对象都会占用内存,对象越多,内存消耗就越大,所表现出来的网站性能就越差劲。所以我们应该减少 DOM 操作。所以事件委托派上用场了。

使用事件委托

使用代码实现一下:

应用场景二:改变 DOM 结构

功能需求

这里简单用代码实现一下:

使用事件委托

事件委托就不用担心事件复制不了的问题了,使用代码实现一下:

事件委托的优缺点

优点

  1. 减少内存消耗,减少事件绑定。
  2. 给动态添加的元素绑定事件。

缺点

  1. 部分事件如 focus、blur 等无冒泡机制,所以无法委托。
  2. 事件委托有对子元素的查找过程,委托层级过深,可能会被某一层阻止掉。
  3. 频繁触发的事件,不适合事件委托。

总结

​ 事件委托固然方便,但是我们也要在合适的场景使用它,以免事倍功半。

到此这篇关于JavaScript必会技能之事件委托详解的文章就介绍到这了,更多相关js事件委托内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文