首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我应该使用事件委托而不是queryselectorAll

为什么我应该使用事件委托而不是queryselectorAll
EN

Stack Overflow用户
提问于 2019-05-08 18:28:43
回答 1查看 529关注 0票数 2

我正在学习JavaScript,跨越事件冒泡和事件委托。我知道事件冒泡是什么(从子事件一直到窗口对象),但是我看到每个人都说事件委托正好相反,他们执行一些If语句来匹配事件目标和他们想要访问的元素。现在我在想..。

为什么不对多个元素使用“querySelectorAll”呢?

为什么人们认为事件冒泡是相反的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-08 18:53:39

以下几个好处:

  • 如果您有1000个按钮,那么最好在侦听子代按钮的祖先元素上添加一个单击处理程序,而不是遍历所有的1000个按钮并每个附加一个处理程序。仅通过1000个元素的迭代就是一个性能问题,如果更糟的话。更别提用于引用处理程序的1000个按钮的内存使用情况了。
  • 您可以监听元素上可能还不存在或还不存在的事件。您可以提前为可能不存在的子代按钮附加单击处理程序。这通常是在通过AJAX加载正在收听的内容时使用的。
  • 您可以在DOM更改中持久化处理程序。通常与动态内容连用。例如,您可以为todo列表项的“删除”按钮设置一次单击处理程序。每次附加/重新附加/分离待办事项列表项时,不必清理其处理程序。您可以不使用委托的一个。

委托,就是委托,托付给他人。在这种情况下,它将保持事件处理程序从元素到其祖先的责任。要想让它起作用,就必须使用气泡。

冒泡只是故事的一半。鼓泡的反面是俘获

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56046974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档