我的工作要求我经常使用jquery。 由于我总是试图找到更好的方法来做事,我想提高javascript级页面的性能。
所以我想知道在Jquery中获取DOM元素的特定子元素的最快方法是什么?
parent
|-element 1
|-element 2
|-parent element 1
|---element A
|---element B
|-parent element 2
|---element C
|-element 3
以下哪种方法最适合获取每个特定元素,假设dom树的第一个分支中的每个元素都有一个可识别的id或类与其他元素不同,并且对哪种元素没有限制他们是?
让每个元素都有自己的选择器:
var element1 = $(".element1");
var element2 = $(".element2");
...
使用父元素获取每个元素:
var parent = $(".parent");
var element1 = parent.children('.element1');
var element2 = parent.children('.element2');
...
将整个事物放入数组并通过它解析:
var elements = $(".parent").children();
var element1 = elements[0];
var element2 = elements[1];
var elementA = elements[2].children('elementA');
// or maybe like this?
// var elementA = elements[2].children()[0];
...
在提出的dom树上,我还包括嵌套的父母和孩子。 哪种方法最适合那些方法,特别是如果它们没有唯一标识符?
例如关于dom树的介绍: 获取这样的元素会更快(假设父元素没有唯一标识符):
var elementA = $(".parent").children(".parent-element-1").children(".elementA")
或
var elementA = $(".parent").find('.elementA')
如果还有其他任何方式(除了通过sizzle调用元素)来获取元素,请告诉我有关它的信息:)
我知道我可以通过javascript单独调用元素,但是有几百个dom元素,这样的任务可能会超出我通常的时间范围 - 或者这个标准是什么?
嘶嘶声很慢:http://jsperf.com/sizzle-is-slow/2
我要问的是正确使用jquery / javascript方法。
答案 0 :(得分:0)
通过ID获取将始终是最快的(如果您可以在您的层次结构中设计),因为ID在浏览器快速查找字典中。类需要更多迭代,因为它支持倍数。我通过Google发现的结果表明ID查找的速度是使用类查找元素的两倍。
您可以使用ID的分层命名:
parent - ID= P1
|-element 1 - ID = P11
|-element 2 - ID = P12
|-parent element 1 - ID= P13
|---element A - ID = P131
|---element B - ID = P132
等
注意:我并不是建议使用这种组织元素或最佳使用jQuery的方法,而是为了解决所列特定问题的大幅度提升:)