クラスやID、その他のセレクタを使用して要素の検索が高速かどうかについては、多くの疑問があります。私はそれに興味がありません。私はあなたが持っているかどうかを知りたい:キャッシュされたセレクタからDOMをトラバースする方が、DOM内の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
を行うことで、コンテナを見つけるために、より速く、それをです上記のシナリオ(このシナリオでもOK、そうです)ではなく、キャッシュされたトラバーサルに対して、IDを持つ新鮮なjQueryオブジェクトを作成します。私は自分のコードの多くで、前者の方法(それはもっと動的になることができるので)をする傾向があることに気付きましたが、後者の方が速いのはいつも好奇心でした。
おかげ
私の疑惑は、後者は高速ですが、テストしましたか?テストハーネスをノックするのはかなり簡単です... –
この情報が古く、jQueryの最新の反復で修正されているかどうかはわかりませんが、 '.closest()'は比較的に確実です他の選択肢よりも遅い。 –
私は実際にjsperfを作成しました:http://jsperf.com/cached-dom-traversal-vs-new-id-selectionがIDのように見えるのは間違いなく最も早く、次に見つかるクラスです。 – Jason