抱歉,这听起来很奇怪。
用户可以按任意顺序创建具有任意数量的元素的HTML页面,Div将被分配一个类。我无法控制要放置的顺序或位置。
我需要遍历DOM并在每个div上使用特定于我的框架的类名称调用init函数。因此,我不知道它们的放置顺序。
这是我的挑战:
-我正在使用递归.children()jQuery调用,然后遍历当前元素的每个子元素...我想我需要找到一种更快的方法来实现此目标,这会影响性能。
-进行迭代时,$ .each()比标准的for循环要快。我不知道为什么。 $ .each()对于较小的集合是否执行得更快? (即尺寸
我的另一种选择是在每个类上执行选择器,但我需要执行几次迭代,因为这不能保证顺序,因此这些迭代会抵消任何性能优势。
所以我的需求:
-一种更好的性能方法,可首先遍历DOM宽度。如果我能找到比JQuery函数更好的性能,可以使用Plain ol'Javascript。
抱歉,我知道这听起来有点奇怪。任何建议都非常欢迎。
最佳答案
首先,您不应该对性能造成重大影响。这个问题可能在您的代码中的其他地方,但是您没有向我们展示当前的内容,因此我无话可说。就是说,这里的想法应该很快:
var classes = ["class1", "class2", "class3"];
i = classes.length, divs, j, curDiv;
while(i--) {
divs = document.getElementsByClassName(classes[i]);
j = divs.length;
while(j--) {
var curDiv = divs[j];
// call some init function on the current div
}
}
如果这不是很快,那么您在其他地方也可能有问题(也请不要忘记确保在加载文档后调用此问题)。
至于
$.each()
是否比标准for
循环快,这几乎是一个经验法则:本机代码比库代码快(但库代码通常更方便)。在这种情况下,这是正确的。您的平均for
循环将比$.each()
快得多。关于javascript - 遍历DOM的最快方法(宽度优先),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13149325/