Recientemente actualicé mi versión de PHPStorm IDE y ahora me advierte sobre el uso ineficiente de jQuery.
Por ejemplo:
var property_single_location = $("#property [data-role='content'] .container");
Solicita esta advertencia:
Comprueba que los selectores de jQuery se utilizan de forma eficiente. Sugiere dividir los selectores descendientes que están precedidos por el selector de ID y advierte sobre los selectores duplicados que podrían almacenarse en caché.
Entonces mi pregunta es:
¿Por qué esto es ineficiente y cuál es la forma eficiente de hacer el selector anterior?
Supongo que en:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
¿Es este el camino correcto?
Creo que la diferencia entre los dos métodos cuando se utilizan versiones recientes de jQuery y navegadores es insignificante. Construí una prueba que muestra que ahora es un 10% más rápido hacer un selector combinado en lugar de una selección en la identificación y luego buscar un caso muy simple:
http://jsperf.com/jquery-find-vs-insel
Para la selección de varios niños por clase en cualquier profundidad, el "buscar" parece ser más rápido:
http://jsperf.com/jquery-find-vs-insel/7
Hubo alguna discusión sobre esto en los foros de jQuery, pero tiene 3 años: https://forum.jquery.com/topic/which-jquery-selection-is-efficient Como señalan aquí, si está haciendo mucho operaciones en el mismo selector de ID, la mayor mejora de rendimiento se encuentra almacenando en caché el elemento de nivel superior. Por otro lado, si está haciendo solo algunas selecciones, prácticamente no habrá diferencia de rendimiento.
Por lo tanto, creo que IntelliJ está exagerando la importancia de este estilo de código.
fuente
La primera pregunta es presionar Alt + Enter, y seleccionar el primer consejo en la lista, luego presionar Enter, verá lo que cree que es la forma más eficiente.
fuente