相关疑难解决方法(0)

jQuery是否会对"选择器"进行任何缓存?

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

if ($("#navbar .heading").text() > "") {
  $("#navbar .heading").hide();
}
Run Code Online (Sandbox Code Playgroud)

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

if ($heading.text() > "") {
  $heading.hide();
}
Run Code Online (Sandbox Code Playgroud)

如果选择器更复杂,我可以想象它是一个非平凡的命中.

jquery jquery-selectors

58
推荐指数
6
解决办法
2万
查看次数

我应该在什么级别缓存jQuery DOM查询的结果?

有很多问题要求缓存jQuery对象,但是我找不到一个问一个jQuery对象可以和应该缓存的地方.我有一个网页,其中包含一个包含一系列功能的JavaScript文件,如下所示.

$(document).ready(function () {

    // do some setup
});

/* function queries the DOM with the same selector multiple times without caching */
function myFunctionOne() {

    $('#name_input').css("border","1px solid #ccc");
    $('#name_input').val(someValue);        
}

/* function uses cached object from a single query */
function myFunctionTwo() {

    var nameInput = $('#name_input')
    nameInput.css("border","1px solid #ccc");
    nameInput.val(someValue);
    // do some other stuff with cached selector        
}
Run Code Online (Sandbox Code Playgroud)

myFunctionOne我低效地查询DOM两次,而在myFunctionTwo我查询DOM一次,将结果缓存在局部变量中,然后使用该变量.我知道这种方法myFunctionTwo更有效但我不确定我应该在哪里实际缓存这些对象.在那一刻我在方法级别缓存对象,但我想知道我是否可以实际缓存它在更高级别,然后在多个函数中使用它.这样我只会查询一次DOM,然后在该文件的所有函数中重用结果.我建议的一个例子如下所示.

$(document).ready(function () {

    // do some setup
    var nameInput = $('#name_input')
}); …
Run Code Online (Sandbox Code Playgroud)

performance jquery

6
推荐指数
1
解决办法
2119
查看次数

标签 统计

jquery ×2

jquery-selectors ×1

performance ×1