Ich habe kürzlich meine Version von PHPStorm IDE aktualisiert und warne mich jetzt vor ineffizienter jQuery-Nutzung.
Beispielsweise:
var property_single_location = $("#property [data-role='content'] .container");
Fordert diese Warnung auf:
Überprüft, ob jQuery-Selektoren effizient verwendet werden. Es wird empfohlen, Nachkommen-Selektoren zu teilen, denen der ID-Selektor vorangestellt ist, und vor doppelten Selektoren zu warnen, die zwischengespeichert werden könnten.
Meine Frage lautet also:
Warum ist dies ineffizient und wie kann der oben genannte Selektor effizient ausgeführt werden?
Ich würde raten bei:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
Ist das der richtige Weg?
Ich glaube, der Unterschied zwischen den beiden Methoden bei der Verwendung neuerer Versionen von jQuery und Browsern ist vernachlässigbar. Ich habe einen Test erstellt, der zeigt, dass es jetzt tatsächlich 10% schneller ist, einen kombinierten Selektor anstelle einer Auswahl anhand der ID durchzuführen und dann einen sehr einfachen Fall zu finden:
http://jsperf.com/jquery-find-vs-insel
Bei der Auswahl mehrerer Kinder nach Klassen in jeder Tiefe scheint der "Fund" schneller zu sein:
http://jsperf.com/jquery-find-vs-insel/7
Es gab einige Diskussionen darüber in jQuery-Foren, aber es ist 3 Jahre alt: https://forum.jquery.com/topic/which-jquery-selection-is-efficient Wie sie hier hervorheben, wenn Sie viel tun Bei Operationen mit demselben ID-Selektor wird die größte Leistungsverbesserung durch Zwischenspeichern des Elements der obersten Ebene erzielt. Wenn Sie jedoch nur einige wenige Auswahlen treffen, gibt es praktisch keinen Leistungsunterschied.
Daher glaube ich, dass IntelliJ die Bedeutung dieses Codestils überbewertet.
quelle
Die erste Frage ist, Alt + Eingabetaste zu drücken und den ersten Tipp in der Liste auszuwählen. Drücken Sie dann die Eingabetaste, um zu sehen, was Ihrer Meinung nach am effizientesten ist.
quelle