获取 DOM 元素的性能差异

performance difference for getting DOM element

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

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

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

第二种方法是正确的,因为您 caching the selector 适合您的元素:

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

在这种情况下,jQuery 将不会再次解析您的 DOM 以查找它之前已经找到的内容。

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

视情况而定。

如果您所做的只是对一个元素进行一系列操作,但之后不使用该元素,最好执行一次查找并使用 jQuery 链接。大多数 jQuery 功能 return 元素,因此您可以像这样将多个功能链接在一起:

$('#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

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