2011-07-05 162 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