例如,第一段代码将执行两次完整搜索,或者如果没有发生DOM更改,是否足够聪明以缓存结果?

if ($("#navbar .heading").text() > "") {
  $("#navbar .heading").hide();
}


var $heading = $("#navbar .heading");

if ($heading.text() > "") {
  $heading.hide();
}

如果选择器更复杂,我可以想象这是一个不小的成功。

最佳答案

jQuery没有,但是有可能在表达式中分配给变量,然后在后续表达式中重用这些变量。因此,缓存您的示例...

if ((cached = $("#navbar .heading")).text() > "") {
  cached.hide();
}

不足之处是它使代码更容易出错且难以理解。

关于jquery - jQuery是否对 “selectors”进行任何形式的缓存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/291841/

10-11 11:30