2016-12-22 73 views
-1

我通過id獲取元素時遇到了一些麻煩。我的HTML看起來像這樣:在jQuery中ID長度的問題?

<div id="F6fsCKVqdAXAXUlRAAAC0zwj8s9QQUKp0riVAAAD"></div> 
<li class="active" id="F6fsCKVqdAXAXUlRAAAC0zwj8s9QQUKp0riVAAAD"></li> 

當我使用這樣的ID時,我只能得到li元素。 Picture of result.

但是當我嘗試用另一個,更短的ID - 這樣的:

<div id="room1"></div> 
<li class="active" id="room1"></li> 

然後我得到的兩個元素。 Picture of result

我不明白這個行爲,有人在意解釋嗎?

+2

只允許一個'id' - 不允許有相同的多個'id' ... – kukkuz

+2

永遠不會有兩個具有相同ID的元素。這對Dom來說是違法的,但只有jquery奇怪地接受了這一點。 –

+0

li必須在裏面的ul或ol在哪裏? – Bindrid

回答

1

正如名稱所示,ID必須是整個HTML文檔中唯一的。

的ID全局屬性定義一個唯一的標識符(ID),其必須在整個文檔中的獨特

另一種方法是使用不同的ID來表示你li元件或類,像您用於表示active狀態。

+2

這應該是一個評論,請注意... – MrBuggy

+0

一個班會更好,我同意。我會改變這一點。但問題不是我的身份證不是唯一的,就像你在第二張照片中看到的那樣。 – gel

3

是的,它必須至少有一個字符。沒有最大值。

W3C

3.2.3.1 id屬性

id屬性指定其元素的唯一標識符(ID)。 值必須在元素的主子樹 中的所有ID中唯一,並且必須至少包含一個字符。該值不能包含任何空格字符 。

一個元素的唯一標識符可以被用於各種目的, 最顯着的方式來鏈接到使用 片段標識符一個文檔的特定部分,以此爲目標元素時的腳本, 和作爲從CSS設計特定元素的方式。

如果該值是不是空字符串,用戶代理必須在 元素與給定值(確切地,包括任何空格字符) 的ID匹配的目的,元素的家庭樹 (如內中選擇關聯CSS或 DOM中的getElementById()方法)。

標識符是不透明的字符串。特定的含義不應該是從id屬性的值派生的 。

如果其他機制(例如DOM核心方法)能夠以不與id屬性衝突的 方式設置元素ID,則此規範不排除具有多個ID的元素。

ID IDL屬性必須反映ID內容屬性。