これは長いものになるので、カウボーイをサドルアップしてください. 午前中は古いコードのいくつかを調べていましたが、ベスト プラクティスと最適化について疑問に思っています。主観的なレーンに乗り込むのを避けるために、いくつかの例を投稿し、質問に簡単に答えられることを願っています。答えを簡単にし、間違いの可能性を減らすために、例を非常に単純に保つようにします. どうぞ:
1) 割り当てと jQuery 呼び出し
セレクターにアクセスするときは、同じ呼び出しを複数回行うよりも、セレクターを変数に割り当てる方が一般的に良いと考えられていることを理解しています-例.
$('div#apples').hide();
$('div#apples').show();
対。
var oranges = $('div#oranges');
oranges.show();
oranges.hide();
jQuery の を参照するときに、これと同じ規則が適用されます$(this)
か? 元。テーブル内の一部のデータをクリック可能にし、リンクをカスタマイズする簡単なスクリプト。
$('tr td').each( function() {
var colNum = $(this).index();
var rowNum = $(this).parent().index();
$(this).wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
})
対。
$('tr td').each( function() {
var self = $(this);
var colNum = self.index()
var rowNum = self.parent().index()
self.wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
});
2)this
対$(this)
さて、この次のものは私が長い間疑問に思っていたことですが、それに関する情報を見つけることができないようです. 無知をお許しください。this
jQuery をラップするのではなく、バニラ js を呼び出すのはいつ意味があり$(this)
ますか? 私の理解では -
$('button').click(function() {
alert('Button clicked: ' + $(this).attr('id'));
});
this
次のようなバニラ オブジェクトの DOM 属性にアクセスするよりもはるかに効率的ではありません-
$('button').click(function() {
alert('Button clicked: ' + this.id);
});
そこで何が起こっているのかは理解していますが、どちらを使用するかを決定する際に従うべき経験則があるかどうか疑問に思っています。
3) 特異性が高いほど常に優れていますか?
これは非常に単純ですが、セレクターをより具体的にすることは常に有益ですか? $('.rowStripeClass')
よりもはるかに遅いことは簡単にわかります$('#tableDiv.rowStripeClass')
が、どこで線を引きますか? $('body div#tableDiv table tbody tr.rowStripeClass')
まだ速いですか?任意の入力をいただければ幸いです。
ここまでたどり着いたら、見てくれてありがとう!まだの場合は、:p </p>