我正在使用jQuery,我只是想知道,ID在整个页面中是否必须始终唯一?我知道,类可以重复多次,ID呢?

评论

id属性通常仅使用一次,因为ID是唯一的

如果可以,则不能覆盖ID的定义。

为什么每个人都不赞成这个问题?我可以说这很简单,但这并不是拒绝投票的原因,您应该继续前进...

@nodrog人们在这里不知道downvote的含义...。我Upvoted。

#1 楼

是的,它必须是唯一的。

HTML4:

https://www.w3.org/TR/html4/struct/global.html#h-7.5.2

7.5.2节:


id = name [CS]
此属性为元素分配名称。此名称在文档中必须是唯一的。


HTML5:

https://www.w3.org/TR/html5/dom.html#element -attrdef-global-id


id属性指定其元素的唯一标识符(ID)。
值在元素的主子树的所有ID中必须唯一。
至少包含一个字符。该值不能包含
任何空格字符。


#2 楼

来自mdn https://developer.mozilla.org/en/DOM/element.id
所以我想最好是...

#3 楼


ID是否在整个页面中必须唯一?


号。

因为2019年12月6日的HTML生活标准明确状态:


classidslot属性可以在所有HTML元素上指定。 ……。
在HTML元素上指定时,id属性值在元素树中的所有ID中必须唯一,并且必须至少包含一个字符。


和一个页面可能有几个DOM树。例如,当您将()影子DOM树附加(Element.attachShadow())到元素上时,它就会执行此操作。




TL; DR


ID是否必须在整个页面中唯一?


编号


ID在DOM树中必须唯一吗?


是的。

#4 楼

2018年1月,这是Youtube HTML,您可以看到id =“ button” id =“ info”已重复。



#5 楼

从技术上讲,按照HTML5标准,该ID在页面上必须是唯一的-https://developer.mozilla.org/en/DOM/element.id

但是我在非常模块化的网站上工作,被完全忽略并且有效。这很有意义-最令人惊讶的部分。

我们称其为“组件化”

例如,您的页面上可能有一个组件,它是某种小部件。 。它内部有带有自己唯一ID的内容,例如“确定按钮”

一旦页面上有许多这样的小部件,从技术上来说您就具有无效的HTML。但是将组件进行组件化是非常合理的,以便它们在内部各自引用自己的确定按钮,例如,如果使用jquery从其根目录进行搜索,则可能是:$widgetRoot.find("#ok-button")

这对我们有用从技术上讲,一旦ID不唯一,就完全不应该使用ID。

如上所述,即使YouTube也会使用ID,所以并不是那么容易背叛。

#6 楼

浏览器过去对此宽大(许多年前是CSS刚成立时),并且允许多次使用ID。它们变得更加严格。

但是,是的,ID是唯一的,并且只能使用一次。

如果需要多次使用CSS格式,请使用CLASS。

#7 楼

基本上,这就是ID的重点。 :) ID是特定的,每页只能使用一次。可以根据需要使用类。

#8 楼

ID必须始终是唯一的。

每个人都有唯一的身份证号码(例如社会安全号码),并且社会阶层中有很多人

#9 楼

使用Javascript,您只能使用ID引用一个元素。 document.getElementById和jQuery的$选择器将仅返回第一个匹配的元素。因此,在多个元素上使用相同的ID毫无意义。

#10 楼

是的,ID是唯一的。课不是。

#11 楼

在https://softwareengineering.stackexchange.com/questions/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really中,对于同一问题有很好的答案。

上面没有提到的一个提示是,如果有多个相同的id出现在同一页面上(即使它违反了标准,也会发生这种情况):


要解决此问题(很可惜),可以使用$("*#foo"),它将说服jQuery使用getElementsByTagName并返回所有匹配元素的列表。