1

私はベストプラクティスを読んでいて、これに出くわしました:

これをしないでください:

$("#element .child").hide()

これを行う:

$("#element").find('.child').hide()

ここで私の質問は、.child要素を複数回非表示/表示したい場合、次のように宣言する必要があるかどうかです。

var spinner = $("#element").find('.child');
spinner.hide();

または私はただ電話を続けますか$("#element").find('.child').hide()

4

4 に答える 4

4

私はそれをこのように宣言する必要があります:

var spinner = $("#element").find('.child');
spinner.hide();

はい。複数のdomクエリが不要になるため、これを正確に行う必要があります。

ただし、一般的なベストプラクティスの1つは、どの変数がjQueryオブジェクトであり、どの変数がjQueryオブジェクトではないかを簡単に追跡できるようにするために、変数の前に接頭辞を付けることです。$

var $spinner = $("#element").find('.child');
$spinner.hide();
于 2012-08-01T21:51:49.153 に答える
2

はい、spinner変数を作成します。そうすれば、jQueryコンストラクター/関数が毎回実行されることはなく、一度作成されたオブジェクトを再利用できます。メモリのオーバーヘッドはごくわずかです。

于 2012-08-01T21:52:02.257 に答える
0

それは完全にあなたの問題に依存します、あなたが異なる機能で複数の目的のために同じ要素を使用する必要がある場合、最良のオプションはそれを変数に保存することです、あなたが一度だけイベントの連鎖を扱う必要があるならそれ以上です

于 2012-08-01T21:58:17.153 に答える
0

はい、常に選択を低く保つようにする必要があります。つまり、すべての要素の選択を、複数回必要な変数に保存する必要があります。

また、単一のDOM操作は避けてください。例を挙げましょう:

jQuery('#test').addClass('hide');
jQuery('#check').addClass('hide');

これにより、IDが「#test」または「#check」の要素にクラス「hide」が追加されます。要素コレクションにも.addClassなどの多くのjQuery関数を適用できます。これにより、オーバーヘッドが削減されます(たとえば、jQuery.each()を使用して配列/コレクションを反復処理する代わりに)。

// Select both ids within one query
jQuery('#test, #check').addClass('hide');

選択ボックスにオプションを追加するなど、実際にDOMを使用している場合、これによりパフォーマンスが大幅に向上する可能性があります。jsfiddleに少しベンチマークを載せました:http://jsfiddle.net/rrgNZ/2/

于 2012-08-01T22:17:25.427 に答える