3

クラス、ID、またはその他のセレクターを介して要素を見つける方が速いかどうかについて、多くの質問があります。私はそれには興味がありません。あなたが持っているかどうか知りたい:

var link = $(this); //let's say you're in a click handler

することでコンテナを見つける方が速いですか

var container = link.closest('.container'); //assume container is .container

また

var container = $('#mycontainer'); //assume same element as above

この質問は、上記の特定のシナリオだけでなく (まあ、このシナリオでも)、キャッシュされたトラバーサルと、ID を持つ新しい jQuery オブジェクトの作成についてです。多くのコードで前者の方法を使用する傾向があることに気付きましたが (より動的にするのに適しているため)、後者の方法で実行した方が速いかどうか常に興味がありました。

ありがとう

4

1 に答える 1

2

セレクターがキャッシュされているかどうかにかかわらず、id セレクターを使用する方が速いと思います。ID セレクターは、ディクショナリ ルックアップのようなキャッシュと最も近い組み合わせに対して、直接的なディクショナリ ルックアップであり、その後にツリー トラバーサルが続きます。

http://jsperf.com/traverse-from-cached-selector-vs-id-selector

最速のルックアップは、ネイティブの documentGetElementById 関数で実行されます。

var container = $(document.getElementById('MyContainer'));
于 2012-05-03T04:22:00.387 に答える