9

所以,我有一些看起来像这样的 JavaScript/jQuery:

var $foo = $('#bar');
$foo.hide();

我一直在假设 jQuery 对给定的选择器进行操作,并将生成的 DOM 元素保存到var $foo... 据我所知,这是真的。

但是,调用是否$foo.hide()会导致 jQuery 重新搜索#bar元素?

4

2 回答 2

11

不,不是,在调用 $(elem) 时会进行引用。这就是为什么var使用它来存储对元素的引用。存储引用始终是最佳实践,var因此下次使用代码时,将使用旧引用,并且无需再次搜索 DOM。

//reference
var a = $('#id');

//use
a.hide();

//same reference, use again
a.show();
于 2012-11-27T14:52:02.080 回答
1

据我了解,将 jQuery 对象设置为 var 会缓存该对象,因此每次需要使用 jQuery 对象执行某些操作时它都不会重新构建它。

关于这个的一些文章,这是我在谷歌上找到的第一篇

但是我认为$('#bar')直接引用 document.getElementById('bar') 所以,没有太多的构建,因此相当快,但是当你有一个对象数组时它会更快。$('.class tagType')

于 2012-11-27T14:56:50.170 回答