2010-06-22 189 views
11

我知道,这两个元素不能拥有相同的ID。但它发生的话,那在我的项目,我有相同的ID两个元素在其他的div,像这样在两个具有其他id的div元素中有两个具有相同id的元素是否正常?

<div id="div1"> 
    <img id="loading" /> 
</div> 
<div id="div2"> 
    <img id="loading" /> 
</div> 

和css:

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

工作正常,我,但也许它不是reccomended这样做?

感谢

UPDATE

是的,我知道,泰德我可以使用的类,它的强烈recomended通过这样做,但我想知道的是有没有这种用法ID的任何潜在的风险? 我认为不,因为当我写例如

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

+0

有没有一个浏览器,你知道,它不工作? – Simon 2010-06-22 12:40:15

+2

@Syom:它可能在CSS中工作得很好,但如果你尝试在Javascript中获得这些元素,你几乎肯定会遇到问题。 – 2010-06-22 12:41:54

+0

@Andy E的头我使用jquery,并称他们在css中相同的方式。即$(“#div1 #loading”)...?有没有潜在的风险? – Simon 2010-06-22 12:43:27

回答

13

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

,你将有麻烦通过JS在大多数浏览器中选择 - 更好地利用类

18

更改您的ID来上课。给重复的ID不是一个好主意。

想想两个同班同学没在一起的学生。想象他们获得考试结果。学校将如何识别标记表?

你的方法是不是跨浏览器兼容,并会影响到很多,而编码JavaScript和发布形式等

可以使用类

见得到相同的效果

<div id="div1"> 
    <img class="loading" /> 
</div> 
<div id="div2"> 
    <img class="loading" /> 
</div> 

和css:

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

ID应该是唯一的,所以id1和id2都可以,但对于具有相同风格的诸多元素,使用HTML类和CSS类选择:

.loading 
{ 
styles here 
} 

这些都可以作为你想有一个网页:)

+1

HTML class。 CSS类选择器。没有像CSS类那样的东西(并且该术语被滥用的方式足以导致混淆) – Quentin 2010-06-22 15:57:14

+0

感谢David的纠正。 :) – Kyle 2010-06-23 07:04:32

4

是的,你是上重复多次对,它并不是建议这样做的。一个ID应该始终是唯一的(例如,如果你想用javascript来选择元素)。 如果你只是想添加相同的风格的div,只需使用CSS类。

3

这是正常的吗?编号

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

但它(显然)的作品,所以...

4

Unique

在数学和逻辑,短语“有一个且只有一个”被用于表明,恰好一个对象的具有某种特点的存在。

#div1 #loading不解决,你有#loading两个实例中your document的事实。所以,不,不这样做。

2

Id是用来区分元素的,它们必须是唯一的,因为不同的原因,其中之一就是使用javascript,像getElementById这样的函数如果有重复的ID将无法很好地工作,您将无法预测JS会在不同的浏览器上执行什么操作,因为JS在每个浏览器上的自我实现都不同。

如果你想使用像#div加载和#DIV2装载的结构似乎清楚地看到,装载有类似用途所以他们应该是类和将这样

# div1.loading和# DIV2使用.loading

使用此语法也一个加是把常见的风格.loading这样

.loading {常见的款式既装载}

# div1.loading {在DIV1被装入只使用风格}

# div2.loading {在DIV2由装入只使用风格}

7

很大的原因是JavaScript的DOM操作。在你的情况下,如果你这样做...

document.getElementById("loading") 

... JavaScript将返回第一个元素,仅第一个元素。没有严格的DOM漫步,你将无法访问其他人。

1

除了验证和纯粹主义外,它功能完好。但是如果我使用#loading id并且发现jquery效果或css效果适用于多个元素,我肯定会很恼火。请告诉我IE6或7或Firefox 1.x或2.x是否会破坏该代码。

4

只是因为没有其他人已经贴吧 - the HTML spec, section on ID,它说:

ID =名称[CS]

该属性指定 一个名称的元素。这个名称必须在文档中唯一 。

-4

我不同意人们说,总是使用“唯一”,即每次标注标签时都使用不同的ID。有时候它是可以接受的,比如我在做计算器的情况。

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

只要你明白如果你是从这些2 div的信息从同一个ID拉,那么我说感觉自由。只要你不要混淆自己,并需要在同一个div ID中有两个不同的结果。

+3

审慎的编码器使用有效的HTML有很多原因。其中首先是维护者的考虑,他将在稍后拿起他的代码。有效的HTML使用唯一的ID属性。 – 2012-05-10 15:30:32

+3

我不低估许多答案,但我愿意为那些鼓励人们故意忽视已公布标准的人作出例外。 – Flexo 2012-05-10 19:51:57

+0

你似乎在使用'id'的地方应该使用'class'。如果你使用锤子作为螺丝刀,如果你打破几个螺丝钉,不要感到惊讶。 – 2012-05-11 02:43:39

1

这是使用元素的坏习惯。因为我会给他们的名字识别唯一的理解。第二件事,我们在CSS中使用它,但在JavaScript中这是一种不好的做法。这是这个班级和学生的好榜样。

所以不要这样做。

相关问题