2010-06-22 303 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中這是一種不好的做法。這是這個班級和學生的好榜樣。

所以不要這樣做。

相關問題