Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何缓存DOM元素?_Javascript_Jquery - Fatal编程技术网

Javascript 如何缓存DOM元素?

Javascript 如何缓存DOM元素?,javascript,jquery,Javascript,Jquery,我知道反复引用$(“#Counter”)是个坏主意,因为你“每次都跳进DOM” 但是这样更好吗 Counter = $('#Counter'); 然后在循环内部: Counter.val()++ 编辑: 对上述代码段的更正,应为: Counter.val(Counter.val()+1); 或者这是在做同样的事情吗?对于您描述的情况,最好在进入迭代语句之前将jQuery对象保存在变量中,在迭代语句中重复使用该对象。它将防止在每次迭代时遍历DOM树。此外,按ID搜索可能不敏感,但按类名查询或

我知道反复引用
$(“#Counter”)
是个坏主意,因为你“每次都跳进DOM”

但是这样更好吗

Counter = $('#Counter');
然后在循环内部:

Counter.val()++
编辑:

对上述代码段的更正,应为:

Counter.val(Counter.val()+1);

或者这是在做同样的事情吗?

对于您描述的情况,最好在进入迭代语句之前将jQuery对象保存在变量中,在迭代语句中重复使用该对象。它将防止在每次迭代时遍历DOM树。此外,按ID搜索可能不敏感,但按类名查询或使用复合选择器可能会大大降低性能

var $Counter = $("#Counter");
for (...) {
    $Counter.val(function(i, val) { return +val + 1; });
    ...
}

注意使用函数作为
val()
的参数,在这种情况下更合理。

是的,更好。查询DOM的次数是一次,而不是N次。如果计划多次重复使用变量,那么使用变量的效率会更高一些。jQuery将缓存选择器和结果,通过使用变量,您可以绕过对额外代码的需要。是的,但变量只是指向DOM。这看起来是一个很好的改进,是如何缓存DOM中的元素的示例。。。在
计数器前面抛出
var
,我们将给您一个金星。
Counter.val()++
将是一个运行时错误-您无法分配调用此函数的结果。是否要
计数器.val()+1