2013-04-08 67 views
1

我必須選擇一個元素,其ID是由MySQL分配,它看起來像這樣:id="Monza (Italien)5"它適用於其他元素,因爲只有一個名稱,但在這種情況下,它是城市名稱,然後是國家名稱。我試圖選擇這樣的$('#Monza'),但它沒有奏效。jQuery的選擇元素與多個然後一個ID的

回答

3

不要使用空格或括號,他們是不是一個有效的ID屬性

ID代幣必須以字母([A-Za-z])開頭,並可以b (0)],連字符(「 - 」),下劃線 (「_」),冒號(「:」)和句點(「。」),後面跟着 任意數量的字母,數字([0-9])。

和HTML 4.01和HTML5之間的區別:

的HTML 4.01規範指出ID標記必須以字母開頭 ([A-ZA-Z])和之後可以是任何數量的字母,數字 ([0-9]),連字符( - ),下劃線(_),冒號(:)和句點(。)。 對於class屬性,沒有這樣的限制。類名稱可以包含任何字符,並且它們不必以 的字母開頭纔有效。

HTML5擺脫了id屬性的額外限制。 只剩下要求 - 除了在文檔中是唯一的 - 是 該值必須至少包含一個字符(不能爲空), ,並且它不能包含任何空格字符。

但是你可以嘗試,如果你沒有更多的選擇:

$("div[id='Monza (Italien)5']") 

不像$('#id'),這將返回多個元素,如果你有自己的網頁中有相同ID的多個元素


看起來像上面的選擇器不工作,你需要在這裏手動轉義無效字符,使其工作:

$("#Monza\\ \\(\\ Italien\\ \\)5") 

Working Demo

+1

HTML5刪除了幾乎所有這些限制:http://www.w3.org/TR/html-markup/global-attributes.html#common.attrs.id – Blender 2013-04-08 05:16:56

+0

我試過你的建議,但它沒有工作.. – TooCooL 2013-04-08 05:22:40

+0

@TooCooL檢查我的編輯:) – Eli 2013-04-08 05:35:54

0

ID不應該有空格,請檢查它here。你可以使用一些像_這樣的字符來加入id部分。

變化

id="Monza (Italien)5" 

對某些東西一樣

id="Monza_Italien_5" 
+0

否決權的理由? – Adil 2013-04-11 05:37:12

4

您可能能夠使用一個屬性選擇:

$('*[id="Monza (Italien)5"]') 

The spec說,id屬性不能包含空格,所以我會解決您的HTML。如果您的HTML無效,瀏覽器可能不會合作。

+0

任何'*'的原因?只是想知道 – Ian 2013-04-08 05:19:21

+0

@Ian:不是。如果沒有元素,它對我來說很奇怪。 – Blender 2013-04-08 05:19:56

+0

哈哈好吧,我不知道我是否忘記了一些東西......我之前從未使用過這個場景:) – Ian 2013-04-08 05:31:54