Pregunta

Lo sé, dos elementos no puede hav el mismo id. Pero es que sucede así, que en mi proyecto tengo dos elementos con el mismo id en otros divs, como este

<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 está recomendado para hacerlo por lo que?

Gracias

Actualizar

Sí, lo sé, Thet puedo usar clases, y está recomendado encarecidamente que hacer por que sí, pero quiero saber ¿hay algún riesgo potencial en este uso de identificación? i no pienso, lástima pues cuando escribí por ejemplo

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

Actualización Final

Uso sugerido Principe, si tiene razones para hacer eso! ;)

¿Fue útil?

Solución 10

https: // www .w3.org / TR / 1999 / REC-html401-19991224 / estructura / global.html # adef-id

introducir descripción de la imagen aquí

pero!

Si lo necesita en su proyecto, se puede utilizar, como se sugiere en mi Pregunta Actualización Final

Otros consejos

cambiar su identificador de clase. No es una buena idea para dar ID duplicado.

Piense dos estudiantes que tienen el mismo rollo no está en una clase. Imagínelos conseguir un resultado del examen. ¿Cómo va a la escuela será capaz de reconocer la marksheet?

Su camino no es compatible con navegadores, y afectará a muchos mientras que la codificación JavaScript y formulario enviado, etc.

Se 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...
}

una necesidad id (debería) ser único !!

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

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

document.getElementById("loading")

... JavaScript volverá al primer elemento, y sólo el primer elemento. Usted no tiene manera de acceder al resto de ellos sin una seria DOM caminar.

El hecho de que nadie más ha publicado que - la especificación de HTML, en la sección de Identificación , que dice:

  

id = nombre [CS]

     

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

Si usted tiene razón, no se recommened para hacerlo. Un ID siempre debe ser único (por ejemplo, si desea seleccionar el elemento con javascript). Si lo que desea es añadir el mismo estilo a los divs, sólo tiene que utilizar la clase css.

único :

  

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 basta para colmar el hecho de que tiene dos instancias de #loading en su documento . Así que no, no hagas eso.

identificadores deben ser únicos, por lo ID1 e ID2 están muy bien, pero para muchos elementos con el mismo estilo, utilizan un selector de clase HTML y CSS de clase:

.loading
{
styles here
}

Estos están autorizados a repetirse tantas veces como desee en una página:)

¿Es normal? No.

¿Es recomendable? ¡Definitivamente no! De hecho, es prohibido (pero su aplicación es débil).

Pero es (aparentemente) las obras, así que ...

ID se utilizan para distinguir los elementos, que deben ser únicos para diferentes razones, una de ellas es el uso de JavaScript, funcionan como getElemenById no funcionará bien si tiene duplicado ID, no será capaz de predecir lo que va a hacer en otro navegador como JS es auto-aplicado en cada navegador 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 una ventaja de utilizar esta sintaxis sería poner el estilo común en .loading como esto

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

# {div1.loading estilo usado solamente por la carga en div1}

# {div2.loading estilo usado solamente por la carga en div2}

validación y purista-ismo lado, es perfectamente funcional. Pero sin duda estaría molesto si uso que #loading Identificación y encontrar que un efecto o un efecto jquery css se aplica a más de 1 element.Do dime si IE6 o 7 o Firefox 1.x 2.x o ruinas ese código.

mala práctica de usar que habíamos Es el elemento. Porque había algo para dar a entender único con su identificación nombre. Y la segunda cosa que utilizamos en la CSS, pero en JavaScript esta mala práctica. Así buen ejemplo de esta clase y el estudiante.

Así que no hacerlo.

No estoy de acuerdo en las personas que dicen utilizar siempre un "único", es decir, diferente cada vez que la etiqueta de identificación uno. A veces es aceptable, como mi caso en el que estoy haciendo una calculadora.

El javascript está haciendo los cálculos y la salida el resultado en el div con el id = "total". Necesito que exactamente el mismo "total" de estar en 2 lugares diferentes sin embargo. En este caso, ¿por qué no iba a usar dos div de diferente con el mismo ID? Necesito el mismo número en ambos cuadros. Con jQuery, realizo y la salida de los cálculos una vez y se rellena tanto div de, al mismo tiempo, que es lo que quiero.

Mientras que comprende los riesgos en que si estuviera tirando de la información de los 2 div de con el mismo ID, entonces yo digo que se siente libre. A medida de que no te confundes y necesidad 2 resultados diferentes en la misma div id.

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