要素を選択するときにパフォーマンスが向上することを$('#childDiv2 .txtClass')
期待していました。しかし、これによると$('#childDiv2 input.txtClass')
<input type="text" id="txtID" class="txtClass"/>
パフォーマンス分析 $('.txtClass');
は、この中で最適なセレクタです。私は JQuery 1.7.2 を使用しています。これについて説明できる人はいますか?
html
<div class="childDiv2">
<input type="text" id="txtID" class="txtClass"/>
<p class="child">Blah Blah Blah</p>
</div>
JS
$('.txtClass');
$('#childDiv2 .txtClass')
$('#childDiv2 > .txtClass')
$('input.txtClass')
$('#childDiv2 input.txtClass')
ベストアンサー1
現代のブラウザは非常に効率的なクラス名による要素の取得()指定されたクラスを持つ要素を返すメソッド。これが、このケースでは単一のクラス セレクターの方が高速である理由です。
あなたの例を詳しく説明すると:
$(".txtClass") => getElementsByClassName()
$("#childDiv2 .txtClass") => getElementById(),
then getElementsByClassName()
$("#childDiv2 > .txtClass") => getElementById(),
then iterate over children and check class
$("input.txtClass") => getElementsByTagName(),
then iterate over results and check class
$("#childDiv2 input.txtClass") => getElementById(),
then getElementsByTagName(),
then iterate over results and check class
ご覧のとおり、最初のフォームが最新のブラウザで最も高速になるのは当然のことです。