0

我是 JavaScript 纯开发人员,我在测试选择器模块时设计了自己的框架,我发现了一个非常大的问题,那就是性能

在选择器模块中,我没有像 jquery 那样做一个非常复杂的选择器要获取特定类型的元素,例如 TD 元素,请注意 >>>> 不要告诉我使用 getElementsByTagName('TD') 因为在我的选择器中,我可以让开发人员选择超过 1 个 tagName,例如

getElementsByTagNames('td,tr')

所以在那种情况下,我必须得到所有然后循环并只拍下需要的物品

另一方面,我发现这种方式非常消耗性能 jquery 选择项目的速度非常快,jquery 也不会循环或者我的主要问题

如何使用 JavaScript 做一个高性能的选择器 :)

谢谢

4

2 回答 2

7

jquery 也不做循环还是什么

jQuery 足够聪明,可以使用现有的选择器库 (sizzle.js)。

Sizzle足够聪明,可以让浏览器完成工作。document.querySelectorAll成功了。

编辑:实际上,sizzle.js 曾经是 jquery 的固有部分,但现在是一个单独的项目

于 2012-07-08T15:04:35.690 回答
3

getElementsByTagName如果您执行以下操作,您仍然可以使用:

function getElementsByTagNames(elements) {
    elements = elements.split(",");
    var foundElements = [];
    for(var i = 0, len = elements.length; i<len; i++) {
        foundElements.push(document.getElementsByTagName(elements[i]));
    }
    return foundElements;
}

现在,如果您调用,将返回一个包含所有和元素getElementsByTagNames("tr,div")的数组。trdiv

于 2012-07-08T15:01:11.763 回答