你如何缓存DOM元素?

Phi*_*enn 2 javascript jquery

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

但这更好吗?

Counter = $('#Counter');
Run Code Online (Sandbox Code Playgroud)

然后在循环内:

Counter.val()++
Run Code Online (Sandbox Code Playgroud)

编辑:

更正上面的代码段,应该是:

Counter.val(Counter.val()+1);
Run Code Online (Sandbox Code Playgroud)

或者那是做同样的事情?

Vis*_*ioN 6

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

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

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