id在整个页面中必须是唯一的吗?

tjvv9vkg  于 2021-09-13  发布在  Java
关注(0)|答案(11)|浏览(438)

我正在使用jquery,我只是想知道,id在整个页面中是否必须总是唯一的?课堂,我知道,你想重复多少次就重复多少次,id呢?

dluptydi

dluptydi1#

是的,它一定是独一无二的。
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-属性定义全局id
id属性指定其元素的唯一标识符(id)。该值在元素的主子树中的所有ID中必须是唯一的,并且必须至少包含一个字符。该值不能包含任何空格字符。

3pvhb19x

3pvhb19x2#

id在整个页面中必须是唯一的吗?

没有。

因为2021年2月25日的html生活标准明确规定:
这个 class , id ,及 slot 可以在所有html元素上指定属性……。在html元素上指定时 id 属性值在元素树中的所有ID中必须是唯一的,并且必须至少包含一个字符。
一个页面可能有几个dom树。例如,当您附加( Element.attachShadow() )元素的阴影dom树。

tl;博士

id在整个页面中必须是唯一的吗?

在dom树中id必须是唯一的吗?

zkure5ic

zkure5ic3#

来自mdn

https://developer.mozilla.org/en/dom/element.id
所以我想最好是。。。

z4bn682m

z4bn682m4#

从技术上讲,根据html5标准,id在页面上必须是唯一的-https://developer.mozilla.org/en/dom/element.id
但我在非常模块化的网站上工作过,在那里这完全被忽略了,而且很有效。这是有道理的——最令人惊讶的部分。
我们称之为“组件化”
例如,您的页面上可能有一个组件,它是某种小部件。它里面有自己独特的ID,比如“ok按钮”
一旦页面上有许多这样的小部件,从技术上讲,您就拥有无效的html。但是组件化您的小部件是非常有意义的,这样它们在内部都会引用自己的ok按钮,例如,如果使用jquery从其自身的根目录进行搜索,则可能是: $widgetRoot.find("#ok-button") 这对我们来说是可行的,尽管从技术上讲,一旦ID不是唯一的,就不应该使用ID。
如上所述,即使是youtube也会这样做,所以它并不那么叛逆。

5us2dqdw

5us2dqdw5#

浏览器过去对此很宽容(很多年前css还年轻的时候),允许多次使用id。他们变得更加严格了。
但是,是id必须是唯一的,并且只能使用一次。
如果需要多次使用css格式,请使用类。

v6ylcynt

v6ylcynt6#

这就是id的基本要点:)id是特定的,每页只能使用一次。班级可以随意使用。

hi3rlvi2

hi3rlvi27#

2018年1月,这里是youtube html,您可以看到id=“button”id=“info”是重复的。

von4xj4u

von4xj4u8#

使用javascript,您只能使用id引用一个元素。 document.getElementById 还有jquery的 $ 选择器将只返回匹配的第一个元素。因此,在多个元素上使用相同的id是没有意义的。

mitkmikd

mitkmikd9#

对于同一个问题,现在有很多很好的答案https://softwareengineering.stackexchange.com/questions/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really.
上面没有提到的一点是,如果有几个相同的 id 这是一个相同的页面(即使违反了标准,也会发生这种情况):
如果你必须解决这个问题(很遗憾),你可以使用 $("*#foo") 这将说服jquery使用 getElementsByTagName 并返回所有匹配元素的列表。

zy1mlcev

zy1mlcev10#

是的,ID是唯一的。班级不是。

q9rjltbz

q9rjltbz11#

ID必须始终是唯一的。
每个人都有一个唯一的身份证号码(例如社会保险号码),社会阶层中有很多人

相关问题