1

ページにコンテナ要素/divがあるとします。その外側には、ページ レイアウト/ナビゲーションを構成する他の要素があり、その内側にはかなりの量のコンテンツがあります。

私の JavaScript では、そのコンテナー内のいくつかの要素を検索/操作する必要があります。これらの要素のすべてに id プロパティが設定されている場合、スピードに関しては、それらを見つけるために使用する方が良いですかdocument.getElementById()(一度見つかったら、操作のために要素を jQuery オブジェクトに変換する必要があることを考慮してください)、または jQuery を使用してそれらを選択します。 : $("#id")、または最初にコンテナーを選択するには、変数に格納してから、次のように jQuery を使用して操作する要素を選択しますcontainer.find("#id")

どちらのアプローチが速いですか? このような検索の速度は何に依存していますか?

4

1 に答える 1

1

jQuery()id セレクターが内部で使用する場合と同様にdocument.getElementById、ネイティブ メソッドを直接使用する方が明らかに高速です。もちろん、オーバーヘッドはごくわずかです (id で何百もの要素を選択する必要はありません)。そして、それらは異なることを行います。おそらく、DOM ノードを含む jQuery ラッパー オブジェクトを取得する必要があります。

container.find(idselector)しかし、興味深いケースです。ID はドキュメント全体で一意であるため、そのような式はまったく必要ありません。そのため、id の選択は通常O(1)、ブラウザー内のルックアップ テーブルによってブーストされ、完全なドキュメントの場合でも非常に高速です。コンテナー内で使用するとどうなるかはわかりませんが、かなり遅い DOM ツリー トラバーサルにフォールバックする可能性があります。

于 2013-01-10T23:21:57.433 に答える