一个HTML元素可以拥有多个唯一的ID属性吗?

21

需要知道一个HTML元素是否可以有多个ID属性,例如:

<input type="text" id="identifier1" id="selector1" />

我需要澄清W3网站关于选择器的声明。

如果一个元素具有多个ID属性,则所有这些属性都必须被视为该元素的ID,以便用于ID选择器。可以使用xml:id、DOM3 Core、XML DTD和特定命名空间的知识的组合来实现这种情况。

人们提到的可能重复的问题是针对这个语法的。

<input type="text" id="identifier1 selector1" />

这与我所询问的语法不同。


1
请参考此链接(同样的问题在StackOverflow上):https://dev59.com/MHVC5IYBdhLWcg3ww0Hr - Rubyist
请查看之前类似问题的这个答案和评论 - Aziz Shaikh
6个回答

29

需要知道 HTML 元素是否可以具有多个 ID 属性。

简短回答?不行,因为浏览器只会呈现第一个。

请参见此Fiddle示例,我只能使用在 DOM 中出现的第一个id来对其进行 CSS 定位。尝试将 CSS 选择器更改为使用第二个id,它将无法工作。

这是因为浏览器似乎忽略了第二个 ID,如下所示:

<input type="text" id="identifier1">

如果您确实需要在元素上添加其他标识符,您应该考虑使用多个类名或数据属性来对应其他数据。


查找数据属性值的性能如何?现代浏览器版本在查找ID方面非常高效,那么它与数据属性相比如何? - matanster
2
http://jsfiddle.net/S9R8Y/72/ 多个ID,用空格分隔就像一个ID一样工作。 - jt3k

6
需要知道一个 HTML 元素是否可以有多个 ID 属性。
不可以。在 HTML 中,任何一个元素都不能具有多个给定属性的实例。
正如我需要澄清这个陈述一样。
请注意该语句的最后一句话。
同时注意 CSS 中 "ID 属性" 并不是 "名为 id 的属性"。还可以引用该文档中的文字:
文档语言可能包含被声明为 ID 类型的属性。
在 HTML 中,只有 id 属性是 ID 类型。

2
@mattytommo,你无法定位它,因为第二个ID在DOM元素中并不存在。此外,在一个元素上有多个ID是无效的HTML。 - dsgriffin

4
不,即使您指定了多个id,也只使用第一个遇到的id属性。

1
当我在Chrome和IE上验证时,只有第一个id属性被保留。您不能使用其他id属性。 - Tapan Chandra

1

HTML元素的ID不能相同,但类可用于多个元素,并且一个元素可以有多个类。


1
不行,因为标签中不能重复使用属性。这是HTML中的一般规则,不仅限于“id”属性。对于名义上基于SGML的HTML版本和XHTML,这遵循通用的SGML和XML规则。对于HTML序列化HTML5,请参见HTML5 CR,8.1.2.3 Attributes。很难看出为什么要使用重复的“id”属性,因此我无法建议解决方法。通常,对于任何正常使用“id”属性的情况,每个元素一个属性就足够了。

0

不行。元素ID应该在整个文档中是唯一的。


我确保ID始终对整个文档唯一,一个元素可以有多个唯一的ID吗?我想我应该重新表达我的问题。 - Abhishek Madhani
我没有尝试过为任何元素使用多个ID。但是假设第一个单词将作为该元素的唯一ID。例如:<input type="text" id="test1 test3" />,那么在这种情况下,我认为浏览器将通过忽略test3来查找test1作为ID。不确定。 - Rubyist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接