Entendo que um ID deve ser exclusivo em uma página HTML / XHTML.
Minha pergunta é, para um determinado elemento, posso atribuir vários IDs a ele?
<div id="nested_element_123 task_123"></div>
Percebo que tenho uma solução fácil usando simplesmente uma classe. Só estou curioso sobre o uso de IDs dessa maneira.
html
xhtml
standards-compliance
webmat
fonte
fonte
Respostas:
Não. Na especificação XHTML 1.0
fonte
Ao contrário do que todo mundo disse, a resposta correta é SIM
A especificação Selectors é muito clara sobre isso:
Editar
Apenas para esclarecer: Sim, um elemento XHTML pode ter vários IDs, por exemplo
mas
id
não é possível atribuir vários IDs ao mesmo atributo usando uma lista separada por espaço.fonte
This specification doesn't preclude an element having multiple IDs, if other mechanisms (e.g. DOM Core methods) can set an element's ID in a way that doesn't conflict with the id attribute.
(que corresponde às especificações do CSS)id
atributo Para esclarecer, oxml:id
atributo (e, de fato, qualquer atributo fora do espaço de nome padrão) não é válido no XHTML. No entanto, como você cita as especificações do HTML5, isso não causa nenhumaxml:id="bar"
falha silenciosa; ele ainda adicionará obar
ID a esse elemento, permitindo que ele corresponda#bar
.Meu entendimento sempre foi:
Os IDs são de uso único e são aplicados apenas a um elemento ...
As aulas podem ser usadas mais de uma vez ...
fonte
Não. Embora a definição do w3c para HTML 4 pareça não cobrir explicitamente sua pergunta, a definição do atributo name e id indica que não há espaços no identificador:
fonte
Não. Todo elemento DOM, se tiver um ID, possui um ID único e único. Você pode aproximar usando algo como:
e use a navegação para obter o que você realmente deseja.
Se você deseja aplicar estilos, os nomes das classes são melhores.
fonte
Você pode ter apenas um ID por elemento, mas de fato pode ter mais de uma classe. Mas não tenha vários atributos de classe, coloque vários valores de classe em um atributo.
é perfeitamente legal.
fonte
Não, você não pode ter vários IDs para uma única tag, mas eu vi uma tag com um
name
atributo e umid
atributo que são tratados da mesma maneira por alguns aplicativos.fonte
Não, você deve usar DIVs aninhados se desejar seguir esse caminho. Além disso, mesmo que você pudesse, imagine a confusão que isso causaria ao executar document.getElementByID (). Que ID vai pegar se houver vários?
Em um tópico um pouco relacionado, você pode adicionar várias classes a um DIV. Veja a discussão de Eric Myers em,
http://meyerweb.com/eric/articles/webrev/199802a.html
fonte
getElementById();
não faz nada sem uma string especificando o que obter ?!getElementById('foo');
obterá o elemento foo como o ID! Vários IDs não importariam aqui. Ainda procuraria "foo".fonte
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
e
Portanto, "id" deve ser único e não pode conter um espaço.
fonte
Eu gostaria de dizer tecnicamente que sim, já que realmente o que é renderizado é tecnicamente sempre dependente do navegador. A maioria dos navegadores tenta manter as especificações da melhor maneira possível e, até onde eu sei, não há nada nas especificações css. Apenas atestarei o código html, css e javascript real enviado ao navegador antes de qualquer outro interpretador entrar.
No entanto, também digo não, já que todos os navegadores em que testo normalmente não permitem. Se você precisar ver por si mesmo, salve o seguinte como um arquivo .html e abra-o nos principais navegadores. Em todos os navegadores que testei na função javascript não corresponderá a um elemento. No entanto, remova "hunkojunk" da tag id e tudo funciona bem. Código de amostra
fonte
Não.
Dito isto, não há nada para impedi-lo de fazê-lo. Mas você terá um comportamento inconsistente com os vários navegadores. Não faça isso. 1 ID por elemento.
Se você deseja várias designações para um elemento, use classes (separadas por um espaço).
fonte
Isso é interessante, mas até onde eu sei a resposta é um firme não. Não vejo por que você precisa de um ID aninhado, pois geralmente o cruza com outro elemento que tem o mesmo ID aninhado. Se não o fizer, não há sentido, se o fizer, ainda há muito pouco sentido.
fonte
Eu sei que isso tem um ano, mas eu estava curioso sobre isso e tenho certeza que outros encontrarão o caminho até aqui. A resposta simples é não, como outros já disseram antes de mim. Um elemento não pode ter mais de um ID e um ID não pode ser usado mais de uma vez em uma página. Experimente e você verá como não funciona.
Em resposta à resposta da tvanfosson sobre o uso do mesmo ID em dois elementos diferentes. Tanto quanto sei, um ID só pode ser usado uma vez em uma página, independentemente de estar anexado a uma tag diferente.
Por definição, um elemento que precisa de um ID deve ser único, mas se você precisar de dois IDs, ele não é realmente único e precisa de uma classe.
fonte
aulas são feitas especialmente para isso, aqui está o código a partir do qual você pode entender
fonte
Não.
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
id="a b"
<- encontre o caractere de espaço nesse VaLuE .Dito isto, você pode criar vários IDs. Mas se você está seguindo as especificações, a resposta é não.
fonte
Os IDs devem ser exclusivos, portanto, você deve usar um ID específico apenas uma vez em uma página. As aulas podem ser usadas repetidamente.
consulte https://www.w3schools.com/html/html_id.asp para obter mais detalhes.
fonte
Eu não acho que você possa ter dois IDs, mas deve ser possível. Usar o mesmo ID duas vezes é um caso diferente ... como duas pessoas usando o mesmo passaporte. No entanto, uma pessoa pode ter vários passaportes ... Vim procurar por isso, pois tenho uma situação em que um único funcionário pode ter várias funções. Digamos que "sysadm" e "coordenador da equipe" com o id = "sysadm teamcoordinator" me permitam referenciá-los de outras páginas, para que employee.html # sysadm and employee.html # teamcoordinator levem ao mesmo lugar ... Um dia alguém outra pessoa pode assumir a função de coordenador de equipe enquanto o sysadm permanece o sysadm ... então só tenho que alterar os IDs na página employee.html ... mas como eu disse - não funciona :(
fonte