当您想要搜索具有特定值的多个HtmlObject时,哪种javascript代码更有效?

当您想要搜索具有特定值的多个HtmlObject时,哪种javascript代码更有效?,javascript,jquery,performance,Javascript,Jquery,Performance,我试图找出哪个javascript代码更有效,例如,当我搜索几个javascript跨度时 此模式与jquery兼容: $('span[value='+value+']') 或使用标准javascript的此模式: function gEBI(id) { return document.getElementById(id); } var spans = gEBI("content").getElementsByTagName('span'); for (i = 0; i < t

我试图找出哪个javascript代码更有效,例如,当我搜索几个javascript跨度时

此模式与jquery兼容:

$('span[value='+value+']')
或使用标准javascript的此模式:

function gEBI(id) {
    return document.getElementById(id);
}
var spans = gEBI("content").getElementsByTagName('span'); 
for (i = 0; i < this.spans.length; i++)
 { 
     if (this.spans[i].getAttribute("value") == valueThis ) { // operations } 
 }
函数gEBI(id){
返回文档.getElementById(id);
}
var span=gEBI(“内容”).getElementsByTagName(“span”);
对于(i=0;i
还有一个问题是,在现代浏览器(IE8及更高版本)中,搜索通常比jquery或标准JavaScript更高效,jquery将比手动搜索DOM快得多

现代浏览器支持
querySelector
queryselectoral
,它们允许使用CSS查询找到节点,并且比旧的DOM方法快得多。如果这些功能可用,jQuery将使用它们,因此它可以从速度提升中获益

但是,如果您真的想要提高速度,不需要古老的浏览器支持,并且只使用基本的CSS2.1级查询(例如您在那里使用的查询),请直接使用querySelector。这将比jQuery更快:

// If you only need just one
var span = document.querySelector('span[value='+value+']');
// If there's more than one span like that
var spans = document.querySelectorAll('span[value='+value+']');

创建一个,然后让我们知道哪个更快。(然后,其他人会过来指出所有使基准失效的边缘情况。)@KevinB:这不会停止在受支持的浏览器中使用
querySelectorAll()
(即在大多数情况下使其变慢吗?)。确保在jsperf中有一个公平的比较$('span[value='+value+']')与gEBI('content')不同。getElementsByTagName(),您至少必须使用$('content span[value='+value+'])。
$('content')。find('span[value='+value+'])
将是一个更好的jquerycomparison@Matt当然可以,但是span元素有值属性吗?我想你可以编一个,