【问题标题】:jQuery $(this) optimization [duplicate]jQuery $(this) 优化 [重复]
【发布时间】:2012-05-26 08:25:43
【问题描述】:

可能重复:
What is the cost of '$(this)'?

我经常在一些开发人员代码中看到$(this) 可能存在 3-5 次引用同一个 dom 节点。我想知道在什么时候值得优化并存储在像 var el = $(this); 这样的变量中?

有没有人知道有关此性能的可靠文档来源?

【问题讨论】:

  • 好吧,缓存的优势不需要任何文档 IMO 的支持...
  • tbh,3-4 次不会被抄袭.. 因为 this 在本地范围内可用.. 但缓存总是更好.. 我会缓存更复杂的选择器和根据他们的使用情况..
  • 我敢打赌,如果您在同一个函数上运行 1000 次迭代进行测试比较,差异会小于 10 毫秒。因此,如果您一次进行一次迭代......实际上它会大致相同,这只是理论和编码风格 IMO 的问题。

标签: jquery optimization


【解决方案1】:

如果您必须多次使用它,请将其缓存。恕我直言,为什么要一直调用 DOM?

注意:我建议在实际上是 jquery DOM 元素的变量之前添加$。它可以更轻松地跟踪变量的真正含义。

【讨论】:

    【解决方案2】:

    我用var $this = $(this);

    本文提供性能分析。 10,000 次通话后,您将节省 1 秒 :) http://www.stoimen.com/blog/2010/06/19/speed-up-the-jquery-code-selectors-cache/

    【讨论】:

    • 我认为这(不是双关语)已经成为一种惯例
    【解决方案3】:

    如果你将它缓存在一个变量中,它也可以减少输入,但也可以通过缩小器进行优化,因为 $(this) 不能被缩小,而引用 $(this) 的局部变量可能会被缩小为一个字符

    【讨论】:

      【解决方案4】:

      这意味着它只是标记事件的元素。

      $("input").click(function(){
        $(this)// this refer to the input element that you click
      })
      

      当我们需要存储这个元素时,我们使用一个变量来存储它。 所以 var el = $(this) 的 el 也表示输入元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 2013-10-04
        • 2012-11-15
        • 2015-08-07
        • 2018-01-19
        • 2013-04-17
        • 1970-01-01
        相关资源
        最近更新 更多