在两个div元素中具有相同id的两个元素与其他id:updated是否正常是正常的

我知道,这两个元素不能拥有相同的id。 但事实是这样,在我的项目中,我有两个在其他div中具有相同id的元素,就像这样

和css:

 #div1 #loading { some style here... } #div2 #loading { another style here... } 

对我来说很好,但也许这样做不被推荐吗?

谢谢

UPDATE

是的,我知道,我可以使用课程,并且强烈建议这样做,但我想知道这种id的使用是否存在任何潜在的风险? 我想不,因为当我写的时候

$("#div1 #loading")...它成为一个独特的元素。 不是吗?

最后更新

如果您有理由这样做,请使用建议的原则! ;)

将您的ID更改为课程。 提供重复的ID不是一个好主意。

想想两个同class同学的学生。 想象一下他们得到的考试成绩。 学校将如何识别标记?

你的方式不是跨浏览器兼容,并且在编写JavaScript,发布表格等时会影响很多

您可以使用类获得相同的效果

看到

 

和css:

 #div1 .loading { some style here... } #div2 .loading { another style here... } 

一个id必须(应该)是唯一的!!

在大多数浏览器中通过JS选择它会有麻烦 – 更好地使用类

最重要的原因是JavaScript DOM操作。 在你的情况下,如果你做这样的事情……

 document.getElementById("loading") 

… JavaScript将返回第一个元素,仅返回第一个元素。 没有严重的DOM行走,你将无法访问其余的。

仅仅因为没有其他人发布它 – HTML规范,关于ID的部分 ,其中说:

id = name [CS]

此属性为元素指定名称。 该名称在文档中必须是唯一的。

是的,你是对的,不推荐这样做。 ID应始终是唯一的(例如,如果要使用javascript选择元素)。 如果您只想为div添加相同的样式,只需使用css类。

独特 :

在数学和逻辑中,短语“只有一个”用于表示只存在具有特定属性的一个对象。

#div1 #loading不能解决您在文档中有两个#loading实例的问题。 所以,不,不要那样做。

ID应该是唯一的,因此id1和id2很好,但对于许多具有相同样式的元素,请使用HTML类和CSS类选择器:

 .loading { styles here } 

这些允许在页面上重复多次:)

这是正常的吗? 没有。

推荐吗? 当然不! 它实际上是被禁止的(但执法很薄弱)。

但它(显然)有效,所以……

Id用于区分元素,它们必须是唯一的,因为不同的原因,其中一个是使用javascript,如果你有重复的ID,像getElementById这样的函数将无法正常工作,你将无法预测它会是什么在不同的浏览器上执行,因为JS在每个浏览器上以不同方式自行实现

如果你想使用像#div loading和#div2 loading这样的结构,似乎很清楚两个加载都有类似的用途,所以它们应该是类,并且会像这样使用

#div1.loading和#div2.loading

使用这种语法的一个优点是将常用样式放在.loading中

.loading {style共同加载}

#div1.loading {样式仅由div1中的加载使用}

#div2.loading {style仅用于div2中的加载}

https://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#adef-id

在此处输入图像描述

但!

如果您在项目中需要它,您可以使用它,就像我的问题最终更新中建议的那样!

validation和纯粹主义,它是完美的function。 但是如果我使用#loading id并发现jquery效果或css效果适用于1个以上的元素,我肯定会生气。请告诉我IE6或7或Firefox 1.x或2.x是否会破坏该代码。

在元素上使用我是不好的做法。 因为我会用他们的名字识别来提供独特的理解。 第二件事我们在CSS中使用它,但在JavaScript中这是一种不好的做法。 这个class级和学生的好榜样。

所以不要这样做。

我不同意那些总是使用“独特”的人,这意味着每次标注一个ID时都会使用不同的ID。 有时它是可以接受的,例如我在制作计算器的情况。

javascript正在进行数学运算并将结果输出到id为“total”的div中。 然而,我需要在两个不同的地方使用相同的“总数”。 在这种情况下,为什么我不会使用具有相同ID的两个不同的div? 我在两个盒子里都需要相同的数字。 使用jQuery,我执行并输出一次数学,它同时填充两个div,这就是我想要的。

只要您了解如果您从具有相同ID的那两个div中提取信息的风险,那么我说是免费的。 只要你不要混淆自己,并在同一个div ID中需要2个不同的结果。