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

Why should I use event delegation instead of queryselectorAll

我正在学习 JavaScript 并学习了事件冒泡和事件委托。 我知道事件冒泡是什么(从 child 到 Window Object),但我看到每个人都说事件委托是相反的,他们做了一些与事件匹配的 If 语句以他们想要访问的元素为目标。现在我想知道...
为什么不对多个元素使用 'querySelectorAll'?
为什么被认为是事件冒泡的对立面?

一些好处:

  • 如果您有 1000 个按钮,最好在祖先元素上添加 一个 单击处理程序来侦听对后代按钮的单击,而不是通过所有 1000 个按钮并分别附加一个处理程序。仅迭代 1000 个元素就是一个性能问题,如果更多则更糟。更不用说 1000 个按钮引用处理程序所涉及的内存使用量。

  • 您可以在 可能不存在或尚不存在的元素 上侦听事件。您可以提前为可能不存在的后代按钮附加点击处理程序。这通常在通过 AJAX.

  • 加载正在收听的内容时使用
  • 您可以在 DOM 更改中保留处理程序。通常与动态内容一起使用。例如,您可以为待办事项列表项的删除按钮创建一次单击处理程序。每次 attach/reattach/detach 待办事项列表项时,您都不必清理其处理程序。你可以不理会委托人。

委托,就是委托,to entrust to another。在这种情况下,它将保存事件处理程序的责任从一个元素传递给它的祖先。为了让它起作用,它必须使用冒泡。

冒泡只是故事的一半。冒泡的反义词是capturing.