Pregunta

¿Por qué es más rápido que 1 2?

  1. $('#p1').find('span');
  2. $('#p1 span');
¿Fue útil?

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

Pruébalo con 1.3.2 aquí .

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top