我正在使用jquery,我只是想知道,id在整个页面中是否必须总是唯一的?课堂,我知道,你想重复多少次就重复多少次,id呢?
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-属性定义全局idid属性指定其元素的唯一标识符(id)。该值在元素的主子树中的所有ID中必须是唯一的,并且必须至少包含一个字符。该值不能包含任何空格字符。
3pvhb19x2#
id在整个页面中必须是唯一的吗?
因为2021年2月25日的html生活标准明确规定:这个 class , id ,及 slot 可以在所有html元素上指定属性……。在html元素上指定时 id 属性值在元素树中的所有ID中必须是唯一的,并且必须至少包含一个字符。一个页面可能有几个dom树。例如,当您附加( Element.attachShadow() )元素的阴影dom树。
class
id
slot
Element.attachShadow()
id在整个页面中必须是唯一的吗?不在dom树中id必须是唯一的吗?对
zkure5ic3#
来自mdnhttps://developer.mozilla.org/en/dom/element.id所以我想最好是。。。
z4bn682m4#
从技术上讲,根据html5标准,id在页面上必须是唯一的-https://developer.mozilla.org/en/dom/element.id但我在非常模块化的网站上工作过,在那里这完全被忽略了,而且很有效。这是有道理的——最令人惊讶的部分。我们称之为“组件化”例如,您的页面上可能有一个组件,它是某种小部件。它里面有自己独特的ID,比如“ok按钮”一旦页面上有许多这样的小部件,从技术上讲,您就拥有无效的html。但是组件化您的小部件是非常有意义的,这样它们在内部都会引用自己的ok按钮,例如,如果使用jquery从其自身的根目录进行搜索,则可能是: $widgetRoot.find("#ok-button") 这对我们来说是可行的,尽管从技术上讲,一旦ID不是唯一的,就不应该使用ID。如上所述,即使是youtube也会这样做,所以它并不那么叛逆。
$widgetRoot.find("#ok-button")
5us2dqdw5#
浏览器过去对此很宽容(很多年前css还年轻的时候),允许多次使用id。他们变得更加严格了。但是,是id必须是唯一的,并且只能使用一次。如果需要多次使用css格式,请使用类。
v6ylcynt6#
这就是id的基本要点:)id是特定的,每页只能使用一次。班级可以随意使用。
hi3rlvi27#
2018年1月,这里是youtube html,您可以看到id=“button”id=“info”是重复的。
von4xj4u8#
使用javascript,您只能使用id引用一个元素。 document.getElementById 还有jquery的 $ 选择器将只返回匹配的第一个元素。因此,在多个元素上使用相同的id是没有意义的。
document.getElementById
$
mitkmikd9#
对于同一个问题,现在有很多很好的答案https://softwareengineering.stackexchange.com/questions/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really.上面没有提到的一点是,如果有几个相同的 id 这是一个相同的页面(即使违反了标准,也会发生这种情况):如果你必须解决这个问题(很遗憾),你可以使用 $("*#foo") 这将说服jquery使用 getElementsByTagName 并返回所有匹配元素的列表。
$("*#foo")
getElementsByTagName
zy1mlcev10#
是的,ID是唯一的。班级不是。
q9rjltbz11#
ID必须始终是唯一的。每个人都有一个唯一的身份证号码(例如社会保险号码),社会阶层中有很多人
11条答案
按热度按时间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中必须是唯一的,并且必须至少包含一个字符。该值不能包含任何空格字符。
3pvhb19x2#
id在整个页面中必须是唯一的吗?
没有。
因为2021年2月25日的html生活标准明确规定:
这个
class
,id
,及slot
可以在所有html元素上指定属性……。在html元素上指定时id
属性值在元素树中的所有ID中必须是唯一的,并且必须至少包含一个字符。一个页面可能有几个dom树。例如,当您附加(
Element.attachShadow()
)元素的阴影dom树。tl;博士
id在整个页面中必须是唯一的吗?
不
在dom树中id必须是唯一的吗?
对
zkure5ic3#
来自mdn
https://developer.mozilla.org/en/dom/element.id
所以我想最好是。。。
z4bn682m4#
从技术上讲,根据html5标准,id在页面上必须是唯一的-https://developer.mozilla.org/en/dom/element.id
但我在非常模块化的网站上工作过,在那里这完全被忽略了,而且很有效。这是有道理的——最令人惊讶的部分。
我们称之为“组件化”
例如,您的页面上可能有一个组件,它是某种小部件。它里面有自己独特的ID,比如“ok按钮”
一旦页面上有许多这样的小部件,从技术上讲,您就拥有无效的html。但是组件化您的小部件是非常有意义的,这样它们在内部都会引用自己的ok按钮,例如,如果使用jquery从其自身的根目录进行搜索,则可能是:
$widgetRoot.find("#ok-button")
这对我们来说是可行的,尽管从技术上讲,一旦ID不是唯一的,就不应该使用ID。如上所述,即使是youtube也会这样做,所以它并不那么叛逆。
5us2dqdw5#
浏览器过去对此很宽容(很多年前css还年轻的时候),允许多次使用id。他们变得更加严格了。
但是,是id必须是唯一的,并且只能使用一次。
如果需要多次使用css格式,请使用类。
v6ylcynt6#
这就是id的基本要点:)id是特定的,每页只能使用一次。班级可以随意使用。
hi3rlvi27#
2018年1月,这里是youtube html,您可以看到id=“button”id=“info”是重复的。
von4xj4u8#
使用javascript,您只能使用id引用一个元素。
document.getElementById
还有jquery的$
选择器将只返回匹配的第一个元素。因此,在多个元素上使用相同的id是没有意义的。mitkmikd9#
对于同一个问题,现在有很多很好的答案https://softwareengineering.stackexchange.com/questions/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really.
上面没有提到的一点是,如果有几个相同的
id
这是一个相同的页面(即使违反了标准,也会发生这种情况):如果你必须解决这个问题(很遗憾),你可以使用
$("*#foo")
这将说服jquery使用getElementsByTagName
并返回所有匹配元素的列表。zy1mlcev10#
是的,ID是唯一的。班级不是。
q9rjltbz11#
ID必须始终是唯一的。
每个人都有一个唯一的身份证号码(例如社会保险号码),社会阶层中有很多人