gpt4 book ai didi

javascript - 哪个 jQuery .on() 更快 : direct or delegated?

转载 作者:太空宇宙 更新时间:2023-11-04 16:10:45 24 4
gpt4 key购买 nike

假设我需要设置'click' <div class="cool-div"> 上的事件监听器。假设它有一个祖先。

<div class="cool-ancestor">
...
<div class="cool-div">
...
</div>

为了获得更好的性能,我应该使用以下哪些代码?为什么?

a) $(document).on('click', '.cool-div', function(){...})

b) $('.cool-ancestor').on('click', '.cool-div', function(){...})

c) $('.cool-div').on('click', function(){...})

情况1

  • 只有一个<div class="cool-div">在页面上。

情况2

  • 有很多<div class="cool-div">在页面上。

最佳答案

删除 JQUERY

如果您对性能感兴趣,那么首先要做的就是删除 jquery。尽情享受Vanilla-JS performance 。JQuery 在选择元素时速度较慢,这是事实,但讨厌 JQuery 的另一个原因是它会自动将事件监听器附加到某些元素。
例如,如果您使用 jquery 1.11,则所有 a 标记都将具有 blurfocus 事件监听器设置完毕。

DOM 是如何工作的?

如果您想在导航器中构建功能强大的应用程序,您需要知道导航器如何处理您的代码。
所以,here is a wonderful article about DOM events
reflow and repaints
a good ressource about what will call a reflow

一些指南

如果您没有时间阅读上面的文章,请考虑以下准则:

  • 保持 HTML 简洁(嵌套元素越少,页面上的事件运行速度就越快)
  • 不要附加无用的事件监听器,它只会无缘无故地消耗资源(所以再次删除 jQuery)。
  • 尽量不要触发回流,因为所有元素的位置和尺寸都会重新计算。例如,CSS 位置更改或 input.focus() 导致回流


希望能帮助到你,致以诚挚的问候,

关于javascript - 哪个 jQuery .on() 更快 : direct or delegated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com