2010-04-01 14 views
11

¿Alguien ha marcado elementos de selección con id y clase de CSS y javascript?id vs selección de clase punto de referencia

Tendría sentido que un elemento con una identificación sea más rápido de seleccionar que si tuviera una clase incluso si fuera el único elemento con esa clase.

¿Realmente necesito preocuparme?

Respuesta

10

Durante la búsqueda de un id, el selector va a detener tan pronto como se encuentra una coincidencia (aunque hay muchos) - Asumo hay algún tipo de tabla de búsqueda clave/valor para este propósito, ya que es mucho más rápido que el cruce DOM. Here's why, y aquí es un extracto:

Es todavía mucho mejor seleccionar por ID ... porque jQuery utiliza método nativo del navegador (GetElementByID) para hacer esto y no tiene que hacer nada de es propio DOM transversal, que es mucho más rápido.

Los resultados vinculados allí muestran> 100x de mejora de velocidad con id vs class.

Al buscar un class, se busca todo el DOM (o ámbito). Here's a benchmark using scope.

Puede comparar los selectores en su propio navegador here.

+0

¿Puede respaldar eso con una referencia? – zaf

+1

Se busca todo el DOM incluso si ': first' se usa como selector. >. < – Matt

+0

@Matt eso es jquery, no javascript;) – Andy

6

no creo que debe ser muy preocupados de que: seleccionar por id y selección por class simplemente no tienen el mismo significado:

  • Si desea seleccionar un elemento, saber de forma única identificarlo, usarlo es id
  • Si desea seleccionar uno o más elementos, sabiendo que puede haber más de uno, tenga una manera de identificarlos de manera única, use el class.


Sin embargo, aquí hay un punto de referencia que le puedan interesar: Speed/validity selectors test for frameworks.

+0

Gracias por el enlace - ¡Puede tomar algún tiempo para digerir los datos! Tiendo a abusar de la 'clase' que me funciona, de ahí la pregunta. – zaf

+0

+1 para el enlace – pixeltocode