selector de descendiente de padres jQuery
-
29-09-2019 - |
Pregunta
¿Por qué es más rápido que 1 2?
-
$('#p1').find('span');
-
$('#p1 span');
Solución
En jQuery 1.4 el selector se comprueba si se trata de un selector id
(como su #p1
).
- Si de hecho es, la
document.getElementId(...)
se llama y el resultado se envuelve en objeto utilidad jQuery y devuelto. - Si se trata de nada más que eso, llamadas jQuery Arden que a su vez hace lo que hace para encontrar los elementos. Y, a juzgar por la fuente, esto es algo bastante trivial.
Otros consejos
La mejor manera es a prueba!
A partir de esta sencilla prueba:
- Contenido -
<p id="p1"><span>Test</span></p>
- Looping 100.000 veces
-
Version: jQuery 1.4.2
-
$('#p1').find('span');
: 2601ms -
$('#p1 span');
: 1998ms
Parece que el selector solo es más rápido en este caso, ya que no está haciendo tantas llamadas a través de jQuery esto tiene sentido.
darle una oportunidad aquí, vistazo a la consola .
En CAE estás en jQuery 1.3.2 aquí están esos resultados:
-
$('#p1').find('span');
: 3225ms -
$('#p1 span');
: 2082ms
En su caso, tal vez # 1 es más rápido que el # 2, pero dependiendo del número de iteraciones y el número de elementos para buscar, # 2 podría muy bien ser más rápido que el # 1 en otros escenarios.
ej .: Yo diría que si tuviera 3 elementos span
y no hay otros elementos en #p1
, a continuación, # 1 sería más rápido que # 2, ya hallazgo no está tratando de hacer lo más coincidente CSS. Pero, si tenía 1000 elementos span
, junto con otros elementos en 2000 #p1
, apuesto # 2 sería más rápido, ya que no tiene que iterar sobre cada elemento dos veces.