2016-05-21 45 views
0
var func = function() {  
    if (x) { 
     $('.classA').doSomething; 
    } else 
     $('.classA').doSomethingElse; 
}; 

関数がどのように格納され、実行され、どのようにJqueryセレクタに影響するのか不思議です。セレクタを再利用しないのが理想的だと私は読んだ。連続したコード行でclassAを持つ要素を繰り返し検索しようとしている場合は、要素参照を格納して呼び出してください。しかし、上記の例では、要素参照変数を作成してif/else文の外に置くことで何か価値はありますか?以下のような:関数内の単純なJqueryセレクタの最適化

var func = function() { 
    var element = $('.classA'); 
    if (x) { 
     element.doSomething; 
    } else 
     element.doSomethingElse; 
}; 

最初の例では、それが唯一のいずれかの場合に実行するか、またはそうであろうから、いずれの場合には、jQueryのは一度だけDOMを反復処理する必要があると思われます。

ここでは、関数の外部で要素参照を作成し、関数を実行する前にメモリに格納することができますが、要素が存在せず、前の関数で作成され、ここに?

答えて

1

両方の機能の性能はほぼ同じでなければなりません。

しかし、二つ目に次のような利点があります。

  • あなたが選択したオブジェクトに読みやすい名前を付け
  • それはあなたが(PE後に、後でそれを必要とする場合にはキャッシュされている(簡単にエラーを発見する)ことができますリファクタリング)
  • セレクタは文字列で構成されています。セレクタで入力ミスをした場合、エラーは発生しません
  • セレクタ(p.e.classA-> classB)を変更する場合は、一度だけ必要です
関連する問題