2011-07-05 10 views
1

私は現在、組織のカスタムJSライブラリを更新しています。私が導入しようとしているのは、querySelectorAllです。queryselectorAll使用

それは現代のブラウザで、私は特徴検出を使用する古いブラウザのために実行されます互換性を見てみると:

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

は、私はこの方法を使用する場合に注意する必要のあるすべての注意事項はありますかそれは生産のために良いです?

大切すべてのご意見は、両者の間に

+0

中2の間には大きなパフォーマンスの違いを示し、それがあるべき良い。 –

答えて

2

主な違いは、次のとおりです。

getElementsByTagName 

が... "ライブリスト"、および

querySelectorAll 

を返します...しない。

これはタグによる選択のためだけだと思われますので、私はおそらくqsaを捨てて、必要に応じてライブリストを作成することができます。私はqsaがいくつかのブラウザでも遅くなるかもしれないが、それをテストしていないと感じている。


EDIT:

This testは、限り、あなたは `queryValue`のみタグ名が含まれていることを確信しているとして、クロム13

+0

はいqsaからは大きなパフォーマンスが得られますが、この例ではタグを探すだけですが、ロールアウトにはタグとクラス名が含まれます。 div.className。フォールバックには、エレメントが特定のクラス名を持つかどうかを調べるためのループを持つgetElementsByTagNameがあります(パフォーマンスがさらに向上します)。 実装されているように見えるのは「安全」であることを確認していただけです。 – user502014

+0

@user:その場合、おそらく "ライブリスト"の面は気にしません。そういうわけで、あなたはうまくいくはずです。 – user113716

関連する問題