获取DOM元素的性能差异

时间:2015-02-15 01:15:40

标签: javascript jquery html dom

这可能与小而简单的DOM元素无关,但假设我有一些大型复杂的DOM元素,将元素存储在变量中使用它与使用jQuery选择器不断获取它之间存在很大的性能差异吗? / p>

$('myDomElement').css('height', 500);
$('myDomElement').css('width', 500);
// do more stuff using $('myDomElement')

VS

var myDomElement = $('myDomElement');
$(myDomElement).css('height', 500); 
// do more stuff to myDomElement var

2 个答案:

答案 0 :(得分:4)

这取决于。

如果您所做的只是对一个元素进行一系列操作,但之后不再使用该元素,则最好执行一次查找并使用jQuery链接。大多数jQuery函数返回元素,因此您可以将几个函数链接在一起,如下所示:

$('#myDomElement').css('height', 500)
                 .css('width', 500);

但是,如果您发现自己需要对相同的元素执行多次查找,则应该将其保存到变量中。如果您在脚本中找到了不再需要元素的位置,请不要忘记将其设置为null或以其他方式将其删除。这将允许垃圾收集来获取它,并减少脚本的内存占用。

var el = $('#myDomElement');
el.css('height', 500);

//... further down in your script

el.css('height', 400);
el = null; //Will be picked up by GC

希望有所帮助,祝你好运:)

答案 1 :(得分:1)

第二种方法是正确的,因为你的元素是caching the selector

var myDomElement = $('myDomElement');
myDomElement.css('height', 500); 
// do more stuff to myDomElement var

在这种情况下,jQuery不会再次解析你的DOM以找到之前已经找到的东西。

在第一种情况下,每次调用$('myDomElement')时,jQuery都会在DOM中查找元素,并且完全没必要一直进行此搜索以获取相同的元素。