函数中的简单 Jquery 选择器优化

Simple Jquery Selector Optimization in Functions

var func = function () {    
    if (x) {
        $('.classA').doSomething;
    } else
        $('.classA').doSomethingElse;
};

我很好奇函数的存储方式和 运行 以及它们如何影响 Jquery 选择器。我读到最好不要重用选择器。如果您在连续的代码行中反复尝试查找具有 classA 的元素,最好存储元素引用并直接调用它。但是在上面的例子中,创建一个元素引用变量并将其放在 if/else 语句之外有什么价值吗?如:

var func = function () {
    var element = $('.classA');
    if (x) {
        element.doSomething;
    } else
        element.doSomethingElse;
};

似乎在任何一种情况下,Jquery 都只需要遍历 DOM 一次,因为在第一个示例中,它只会 运行 If 或否则。

现在我知道您可以在函数外部创建元素引用并在 运行 调用函数之前将其存储到内存中,但是如果该元素不存在并且仅由前一个创建那么 运行 是我的示例的函数吗?

两个函数的性能应该差不多。

但是第二个你有以下好处:

  • 你可以给选中的对象起一个易读的名字(更容易发现错误)
  • 已缓存以备日后需要(p.e。重构后)
  • 选择器由一个字符串组成。如果您在选择器中输入错误,它不会抛出任何错误
  • 如果你想改变选择器(p.e.classA -> classB)你只需要一次