事件委托

简介: 事件委托

事件委托

1. 基本概念

事件委托,简单的来说,就是把一个元素的响应事件的函数委托到另一个元素。一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。

前面提到 DOM 中事件委托的实现是利用事件冒泡的机制,那么事件冒泡是什么呢?

2. 事件传播

事件的传播分为三个阶段:「捕获阶段」「目标阶段」「冒泡阶段」

  1. 「捕获阶段」 —— 从windowdocument 和根元素开始,事件向下扩散至目标元素的祖先
  2. 「目标阶段」 —— 事件在用户单击的元素上触发
  3. 「冒泡阶段」——最后,事件冒泡通过目标元素的祖先,一直到根元素 documentwindow

9ec7c8f66cee29e76faf0dad11857cbc.jpg

addEventListener(ev, fn, useCapture = false)第三个参数控制,当useCapturetrue,表示该事件在捕获阶段触发,当useCapturefalse,表示该事件在冒泡阶段触发。

3. 事件委托的好处

  1. 减少内存消耗

试想一下,如果我们有一个列表,列表之中有大量的列表项,我们需要在点击列表项的时候响应一个事件。如果给每个列表项一一都绑定一个函数,那对于内存消耗是非常大的,效率上需要消耗很多性能。因此,比较好的方法就是把这个点击事件绑定到他的父层,然后在执行事件的时候再去匹配判断目标元素。所以事件委托可以减少大量的内存消耗,节约效率。

  1. 动态绑定事件

比如上述的例子中列表项就几个,我们给每个列表项都绑定了事件。在很多时候,我们需要通过 AJAX 或者用户操作动态的增加或者去除列表项元素,那么在每一次改变的时候都需要重新给新增的元素绑定事件,给即将删去的元素解绑事件。如果用了事件委托就没有这种麻烦了,因为事件是绑定在父层的,和目标元素的增减是没有关系的,执行到目标元素是在真正响应执行事件函数的过程中去匹配的。所以使用事件在动态绑定事件的情况下是可以减少很多重复工作的。

相关文章
|
6月前
事件代理和事件委托
事件代理和事件委托
52 6
|
6月前
什么是事件代理?什么事件委托?
什么是事件代理?什么事件委托?
46 0
|
7天前
|
JavaScript 前端开发
事件委托
【10月更文挑战第29天】事件委托是JavaScript中一种重要的事件处理机制,它能够有效地提高事件处理的效率,减少内存占用,尤其适用于处理大量具有相似行为的DOM元素的事件。
|
7天前
|
JavaScript 前端开发 UED
事件冒泡
【10月更文挑战第29天】事件冒泡是 JavaScript 中一种强大的事件传播机制,理解和正确使用事件冒泡可以帮助开发者实现更加高效、灵活的网页交互效果。在实际开发中,需要根据具体的需求和场景,合理地利用事件冒泡,并注意处理可能出现的事件冲突和兼容性问题。
|
2月前
|
监控 JavaScript 前端开发
|
2月前
|
JavaScript 前端开发 API
你真的理解事件绑定、事件冒泡和事件委托吗?
该文章详细解释了JavaScript中的事件绑定机制、事件冒泡行为以及事件委托技术,并通过实例帮助读者更好地理解和应用这些概念。
|
2月前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
23 0
|
5月前
|
索引
事件委托是什么
事件委托是什么
|
6月前
|
JavaScript 前端开发
什么是事件代理?什么是事件委托?
什么是事件代理?什么是事件委托?
70 6