2011-07-05 129 views
1

我目前正在修改我的组织自定义JS库,并且我期待介绍的一件事是querySelectorAll。queryselector所有用法

看的兼容性,将在现代浏览器中运行和旧版本浏览器,我将使用功能检测:

if (document.querySelectorAll) { 
      var nodes = context.querySelectorAll(queryValue); 
} else { 
    var nodes = context.getElementsByTagName(queryValue); 
} 

是否有使用这个方法还是不错的生产时,我应该知道的任何注意事项?

所有观点看重

+0

之间有很大的性能差异,只要你确信'queryValue'只包含一个标签名,它应该是精细。 –

回答

2

两者之间的主要区别在于:

getElementsByTagName 

...将返回“活动列表”

querySelectorAll 

...将不会。

由于这似乎只适用于标签选择,所以我可能会丢弃qsa,因此如果需要,您可以拥有实况列表。我有一种感觉,qsa也可能在某些浏览器中变慢,但还没有测试过。


编辑:

This test显示了在Chrome 13。2

+0

是的,qsa有很大的性能提升,虽然这个例子只是寻找一个标签,推出时会包含标签和类名,例如: div.className。后退是带有循环的getElementsByTagName,以查找元素是否具有特定的类名(这会产生更大的性能增益)。 只是检查它看起来是“安全”的。 – user502014

+0

@user:在这种情况下,你可能不关心“活动列表”方面,因此,你应该没问题。 – user113716