¿Es normal tener dos elementos con el mismo id en dos elementos div con otra ID: updated
-
29-09-2019 - |
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! ;)
Solución 10
https: // www .w3.org / TR / 1999 / REC-html401-19991224 / estructura / global.html # adef-id
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.