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

goo*_*ing 47 html css jquery

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

Fat*_*ror 45

是的,它必须是独一无二的.

HTML4:

http://www.w3.org/TR/html4/struct/global.html

第7.5.2节:

id = name [CS]此属性为元素指定名称.该名称在文档中必须是唯一的.

HTML5:

http://www.w3.org/TR/html5/dom.html#the-id-attribute

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

  • “_在元素的**主子树**_中的所有 ID 中。” 子树。是的,**子**,树。 (3认同)

Кон*_*Ван 16

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

不。

因为2021 年 2 月 25 日HTML 生活标准 明确指出:

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

一个页面可以有多个DOM树。例如,当您将 ( Element.attachShadow()) 一个shadow DOM 树附加到一个元素时。

文档树及其底层影子树


TL; DR

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

不。

ID在 DOM 树中必须是唯一的吗?

是的。


Roy*_*mir 9

来自mdn 在此输入图像描述 https://developer.mozilla.org/en/DOM/element.id

所以我想最好是......


小智 6

浏览器曾经对此很宽容(很多年前,当 css 还很年轻时)并允许 ID 多次使用。他们变得更加严格。

然而,是的,ID 必须是唯一的并且只能使用一次。

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


Bra*_*roy 5

这基本上就是 ID 的全部意义。:) ID 是特定的,每页只能使用一次。类可以随意使用。


van*_*102 5

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

在此输入图像描述

  • 您几乎不应该将大型动态网站的输出视为“有效代码”的先验示例。 (5认同)
  • 投反对票。YouTube 跳桥并不意味着我们就应该跳桥。 (5认同)

Pan*_*ood 5

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

但是我曾在极其模块化的网站上工作过,在那里这完全被忽略并且可以工作。这是有道理的——最令人惊讶的部分。

我们称之为“组件化”

例如,您的页面上可能有一个组件,它是某种小部件。它里面有自己独特的 ID 的东西,例如“确定按钮”

一旦页面上有许多这些小部件,从技术上讲,您的 HTML 是无效的。但是将您的小部件组件化是非常有意义的,以便它们每个在内部都引用自己的 ok 按钮,例如,如果使用 jquery 从它自己的根进行搜索,它可能是:$widgetRoot.find("#ok-button")

这对我们有用,但从技术上讲,一旦它们不是唯一的,就不应该使用 ID。

如上所述,即使是 YouTube 也这样做了,所以它并没有那么叛逆。

  • 我强烈不同意。这是没有意义的,因为 ID 在页面上是唯一的,这与您的“组件化”想法强烈矛盾。这些重复出现的元素应该是类。您可以根据需要从其特定的、独特的容器外部定位它们。例如“#ticker-widget .ok-button”。 (6认同)