2010-06-22 23 views
11

sé que dos elementos no pueden tener la misma identificación. Pero es que sucede así, que en mi proyecto tengo dos elementos con el mismo id en otros divs, como este¿Es normal tener dos elementos con la misma identificación en dos elementos div con otra identificación?

<div id="div1"> 
    <img id="loading" /> 
</div> 
<div id="div2"> 
    <img id="loading" /> 
</div> 

y CSS:

#div1 #loading 
{ 
    some style here... 
} 
#div2 #loading 
{ 
    another style here... 
} 

funciona bien para mí, pero tal vez no es recomendado hacer por eso?

Gracias

ACTUALIZACIÓN

Sí, lo sé, Thet puedo usar clases, y ha recomendado encarecidamente que hacer por que sí, pero quiero saber ¿hay algún riesgo potencial en este uso de identificación? creo que no, porque cuando escribí por ejemplo

$("#div1 #loading")... se convierte en un elemento único. ¿no es así?

+0

¿Hay un navegador que conozcas, donde no funciona? – Simon

+2

@Syom: bien puede funcionar bien con CSS, pero es casi seguro que tendrá problemas si intenta obtener esos elementos en Javascript. –

+0

@Andy E, la cabeza, uso Jquery, y los llamo de la misma manera thet in css. es decir $ ("# div1 #loading") ...? ¿hay algún riesgo potencial? – Simon

Respuesta

13

una identificación debe (debería) ser único!

tendrá problemas seleccionándolo a través de JS en la mayoría de los navegadores - un mejor uso de clase

18

cambiar su identificador de clase. No es una buena idea dar una identificación duplicada.

Creo que dos estudiantes que tienen el mismo rollo no en una clase. Imagínenlos obteniendo el resultado del examen. ¿Cómo la escuela podrá reconocer la hoja de calificación?

Su camino no es transversal navegador compatible, y afectará a muchos mientras que la codificación JavaScript y registró forma etc

Usted puede obtener el mismo efecto usando la clase

ver

<div id="div1"> 
    <img class="loading" /> 
</div> 
<div id="div2"> 
    <img class="loading" /> 
</div> 

y css:

#div1 .loading 
{ 
    some style here... 
} 
#div2 .loading 
{ 
    another style here... 
} 
4

Los ID deben ser únicos, por lo que id1 e id2 están bien , Pero para muchos elementos con el mismo estilo, utilice una clase de HTML y CSS selector de clase:

.loading 
{ 
styles here 
} 

Estos se les permite ser repetida tantas veces como desee en una página :)

+1

clase HTML. Selector de clase CSS No existe una clase de CSS (y el término se usa de manera suficientemente diferente que puede ser confuso) – Quentin

+0

Gracias por la corrección de David. :) – Kyle

4

Sí que son bien, no se recomienda hacerlo. Una ID siempre debe ser única (por ejemplo, si desea seleccionar el elemento con javascript). Si solo desea agregar el mismo estilo a los divs, solo use la clase css.

3

¿Es normal? No.

¿Se recomienda? ¡Definitivamente no! En realidad está prohibido (pero la aplicación es débil).

Pero funciona (aparentemente), entonces ...

4

Unique:

En las matemáticas y la lógica, la frase "hay uno y sólo uno" se utiliza para indicar que exactamente un objeto con existe una cierta propiedad.

#div1 #loading no soluciona el hecho de que tiene dos instancias de #loading en your document. Entonces, no, no hagas eso.

2

Id se utilizan para distinguir elementos, deben ser únicos por diferentes razones, una de ellas es el uso de javascript, la función como getElementById no funcionará bien si tiene una identificación duplicada, no podrá predecir qué hará en un navegador diferente ya que JS se implementa de forma automática en cada navegador de forma diferente.

Si desea utilizar una estructura como la carga #div y # div2 carga que parece claro que tanto la carga tiene usos similares, por lo que deberían ser las clases y se utilizaría como esto

# div1.loading y # div2 .loading

también uno más de la utilización de esta sintaxis sería poner el estilo común en .loading como esto

.loading {estilo común tanto a la carga}

# div1.loading {estilo utilizado sólo por la carga en div1}

# div2.loading {estilo utilizado sólo por la carga en div2}

7

La razón principal es para la manipulación DOM de JavaScript. En su caso, si hace algo como esto ...

document.getElementById("loading") 

... JavaScript devolverá el primer elemento, y el primer elemento solamente. No tendrás forma de acceder al resto de ellos sin una caminata DOM seria.

1

validación y purismo a un lado, es perfectamente funcional. Pero definitivamente me molestaría si uso ese ID de descarga y encuentro que un efecto jquery o un efecto css se aplica a más de 1 elemento. Dígame si IE6 o 7 o Firefox 1.xo 2.x arruinan ese código.

4

El hecho de que nadie más ha publicado que - the HTML spec, section on ID, que dice:

id = name [CS]

Este atributo asigna un nombre a un elemento. Este nombre debe ser ser único en un documento.

-4

No estoy de acuerdo con las personas que dicen usar siempre un "único", lo que significa una identificación diferente cada vez que etiqueta uno. Algunas veces es aceptable, como mi caso en el que estoy haciendo una calculadora.

El javascript está haciendo los cálculos y dando como resultado el resultado en el div con el id = "total". Sin embargo, necesito ese mismo "total" exacto para estar en 2 lugares diferentes. En este caso, ¿por qué no usaría dos div diferentes con la misma ID? Necesito el mismo número en ambos cuadros.Con jQuery, realizo y saco el matemático una vez y llena ambos div's al mismo tiempo, que es lo que quiero.

Siempre y cuando comprenda los riesgos en los que si extraía información de esos 2 div con la misma identificación, entonces le digo que se sienta libre. Siempre y cuando no te confundas y necesites 2 resultados diferentes en la misma identificación de div.

+3

El codificador prudente usa HTML válido por muchas razones. El primero de ellos es la consideración del mantenedor que recogerá su código más tarde. El HTML válido usa atributos únicos de ID. –

+3

No rechazo muchas respuestas, pero estoy dispuesto a hacer una excepción para aquellas que alientan a las personas a ignorar voluntariamente las normas publicadas. – Flexo

+0

Pareces estar usando 'id' donde deberías estar usando' clase'. Si usa un martillo como destornillador, no se sorprenda si rompe algunos tornillos. –

1

Es una mala práctica usar el elemento I'd on. Porque daría algo por entendimiento único con su identificación de nombre. Y lo segundo que usamos es CSS, pero en JavaScript esta mala práctica. Buen ejemplo para esta clase y estudiante.

Así que no hagas esto.

Cuestiones relacionadas