buenas noches
Estoy usando jQuery y me pregunto, ¿la ID tiene que ser siempre única en toda la página? La clase, lo sé, se puede repetir tantas veces como quieras, ¿y la identificación?
Error fatal
Sí, debe ser único.
HTML4:
https://www.w3.org/TR/html4/struct/global.html#h-7.5.2
Sección 7.5.2:
identificación = nombre [CS]
Este atributo asigna un nombre a un elemento. Este nombre debe ser único en un documento.
HTML5:
https://www.w3.org/TR/html5/dom.html#element-attrdef-global-id
El atributo id especifica el identificador único (ID) de su elemento. El valor debe ser único entre todos los ID del subárbol de inicio del elemento y debe contener al menos un carácter. El valor no debe contener caracteres de espacio.
-
“entre todos los ID en el elemento subárbol de inicio.” Subárbol. Sí, sub-árbol.
– Константин Ван
26 de enero de 2021 a las 18:26
Константин Ван
¿Un ID tiene que ser único? en toda la pagina?
No.
Porque el Estándar de vida HTML del 15 de marzo de 2022, dice claramente:
El
class
,id
yslot
Los atributos se pueden especificar en todos elementos HTML. ……. Cuando se especifica en elementos HTMLelid
el valor del atributo debe ser único entre todos los identificaciones en el elemento árbol y debe contener al menos un carácter. El valor no debe contener ninguna espacios en blanco ASCII.
y una página puede tener varios árboles DOM. Lo hace, por ejemplo, cuando ha adjuntado (Element.attachShadow()
) a árbol DOM sombra a un elemento.
TL; DR
¿Un ID tiene que ser único? en toda la pagina?
No.
¿Un ID tiene que ser único? en un árbol DOM?
Sí.
Royi Namir
de mdn
https://developer.mozilla.org/en/DOM/element.id
así que supongo que será mejor…
PandaMadera
Técnicamente, según los estándares de HTML5, el ID debe ser único en la página: https://developer.mozilla.org/en/DOM/element.id
Pero he trabajado en sitios web extremadamente modulares, donde esto se ignora por completo y funciona. Y tiene sentido, la parte más sorprendente.
Lo llamamos “componentización”
Por ejemplo, podría tener un componente en su página, que es algún tipo de widget. Tiene cosas adentro con sus propias identificaciones únicas, por ejemplo, “botón ok”.
Una vez que hay muchos de estos widgets en la página, técnicamente tiene HTML no válido. Pero tiene mucho sentido para componer sus widgets para que cada uno, internamente, haga referencia a su propio botón Aceptar, por ejemplo, si usa jquery para buscar desde su propia raíz, podría ser: $widgetRoot.find("#ok-button")
Esto funciona para nosotros, aunque técnicamente no se deben usar identificaciones, una vez que no son únicas.
Como se mencionó anteriormente, incluso YouTube lo hace, por lo que no es tan renegado.
Ene 2018, aquí está Youtube HTML, puedes ver identificación = “botón” id=”información” están duplicados.
-
Difícilmente debería considerar la salida de sitios web grandes y dinámicos como ejemplos a priori de “código válido”.
–Bram Vanroy
28 mayo 2021 a las 10:52
-
Votación negativa. El hecho de que YouTube salte de un puente no significa que debamos hacerlo.
– Will Lanni
4 de junio de 2021 a las 0:52
bram vanroy
Ese es básicamente el objetivo de una identificación. 🙂 Los ID son específicos, solo se pueden usar una vez por página. Las clases se pueden utilizar como se desee.
-
Difícilmente debería considerar la salida de sitios web grandes y dinámicos como ejemplos a priori de “código válido”.
–Bram Vanroy
28 mayo 2021 a las 10:52
-
Votación negativa. El hecho de que YouTube salte de un puente no significa que debamos hacerlo.
– Will Lanni
4 de junio de 2021 a las 0:52
cjtech
Los navegadores solían ser indulgentes con esto (hace muchos años cuando css era joven) y permitían que la ID se usara más de una vez. Se han vuelto más estrictos.
Sin embargo, sí, las identificaciones deben ser únicas y solo se deben usar una vez.
Si necesita usar el formato css más de una vez, use CLASS.
un atributo de identificación generalmente se usa solo una vez porque una identificación es única
– Ryan
26 de febrero de 2012 a las 16:10
No puede anular la definición de una identificación si cree que podría hacerlo.
– Narayana Nagireddi
26 de febrero de 2012 a las 16:21