【问题标题】:Does it make sense to jQuery cache $(this)?jQuery 缓存 $(this) 有意义吗?
【发布时间】:2010-10-04 16:42:42
【问题描述】:

我仍在学习 jQuery,但我还没有找到可靠的答案。我知道每次使用 jQuery 选择器 $(...) 都会有性能成本,但是 $(this) 在大量使用之前应该缓存它的成本很高吗?

var $this = $(this);

【问题讨论】:

标签: jquery


【解决方案1】:

如果你经常使用它,是的,它是有意义的,或者链式的,例如:

$(this).fadeIn().fadeOut().somethingElse();

如果它很贵?不,不是真的在宏伟的计划中......但如果你在一个循环中,成本会成倍增加,所以最好缓存它。如果你不止一次使用它是有意义的,有多大意义取决于我认为那段代码的性能有多重要。

【讨论】:

    【解决方案2】:

    问得好,杰森。我想 jQuery 选择器函数相当有效地注意到 this 关键字。也就是说,如果可以避免的话,不要重复调用同一个选择器是有意义的。这就是方法链派上用场的地方:

    $(this).hide().show().hide();
    

    如果您要在同一个函数的不同点多次使用同一个选择器,我可能会创建一个变量来存储 jQuery 选择器函数的返回值。没有它,我不会担心,因为它确实是非常非常少量的处理......特别是因为我相当确定 jQuery 库之前会检查 this 关键字(和字符串类型)它运行任何正则表达式。

    【讨论】:

    • jQuery 永远不会看到this。它只会收到this 在代码中那个点引用的引用。不能特殊对待。
    • 啊哈......这确实有道理。尽管如此,与传入字符串选择器相比,在函数返回值之前,对元素的特定引用肯定不会进行太多处理。
    • jQuery 要做的第一个检查是查看选择器是否是 DOMElement,如果是,则简单地返回被包装的元素。我不介意人们使用$this,因为养成缓存选择器的习惯是件好事,但在this 的情况下,你选择哪一个完全不相关。
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 2010-12-24
    • 2021-09-27
    • 2014-07-01
    • 2011-09-29
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多