2011-07-23 38 views
14

我有一個id =「A B」的元素。下面的代碼失敗jQuery:處理id屬性中的空格

<input type="text" id="A B"> 
<script>$("#A B").click(function(){alert();});</script> 

下面的代碼不會失敗

<input type="text" id="AB"> 
<script>$("#AB").click(function(){alert();});</script> 
+0

可能重複http://stackoverflow.com/questions/596314/jquery-ids-帶空格) –

回答

24

雖然這在技術上是無效的有一個ID空間在HTML屬性值(見@ karim79的答案) ,你可以使用jQuery來選擇它。

http://mothereffingcssescapes.com/#A%20B

<script> 
    // document.getElementById or similar 
    document.getElementById('A B'); 
    // document.querySelector or similar 
    $('#A\\ B'); 
</script> 

jQuery使用一個選擇器API的語法,所以你可以使用$('#A\\ B');id="A B"選擇的元素。

要定位在CSS中的元素,你可以逃脫這樣的:

<style> 
    #A\ B { 
    background: hotpink; 
    } 
</style> 
[用空格jQuery的標識](的
+0

如果有人想知道,這也適用於水豚當試圖選擇一個空間的ID。 –

1
 
ID tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). 

那報價從另一個計算器答案拉:jquery IDs with spaces

9

無論是HTML4也不HTML5允許ID屬性值中的空格字符。

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

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

來源:

http://mathiasbynens.be/notes/html5-id-class

+0

+1這是正確的。然而,儘管在HTML中有一個ID屬性值的空間在技術上是無效的,[如果你正確地轉義你的jQuery選擇器,你可以使它工作](http://stackoverflow.com/questions/6802765/jquery-dealing-with -a - 空間 - 內式ID-屬性/ 7873035#7873035)。 –

9

正如他們說你不應該在標識中使用空格。 但無論如何,這不適合你嗎?

$("[id='A B']").click(...) 

編輯:是的,它的工作原理,測試它!不要殺我,標準愛好者! ;-P

3

不應該有在ID空間,但這似乎作品:

$("[id=A B]") 
+0

它似乎我們同時發佈:) – TMS