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

Ich bin neugierig, wie Funktionen gespeichert und ausgeführt werden und wie sich dies auf Jquery-Selektoren auswirkt. Ich habe gelesen, dass es ideal ist, Selektoren nicht wiederzuverwenden. Wenn Sie wiederholt versuchen, in aufeinanderfolgenden Codezeilen ein Element mit der Klasse A zu finden, speichern Sie die Elementverweisliste am besten und rufen Sie sie einfach auf. Aber gibt es im obigen Beispiel irgendeinen Wert beim Erstellen einer Elementreferenzvariablen und beim Platzieren dieser außerhalb der if/else-Anweisung? Wie zum Beispiel:Einfache Jquery-Selektor-Optimierung in Funktionen

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

Es dass Jquery in beiden Fällen scheint, da im ersten Beispiel nur einmal durch den DOM zu durchlaufen muß, wird es nur entweder die If oder Else laufen.

Jetzt weiß ich, dass Sie die Elementverweis außerhalb der Funktion erstellen und speichern können, bevor Sie die Funktion ausführen, aber was ist, wenn das Element nicht existiert und nur von einer vorherigen Funktion erstellt wird, die dann mein Beispiel ausführt Hier?

Antwort

1

Die Leistung beider Funktionen sollte nahezu gleich sein.

Aber mit dem zweiten haben Sie Vorteile wie:

  • Sie können das ausgewählte Objekt einen lesbaren Namen geben (leichter Fehler zu finden)
  • Es falls zwischengespeichert wird Sie es brauchen später (pe nach Refactoring)
  • Der Selektor besteht aus einem String. Wenn Sie einen Tippfehler in der Auswahl gemacht wird es keinen Fehler
  • werfen Wenn Sie den Wähler (P. E. classA -> classB) ändern möchten Sie es brauchen nur einmal