2013-04-26 47 views
1

我試圖讓一個ID的父母在它前面有一個額外的#,但它不工作。 = '#'是否會導致此故障?或者jQuery有什麼問題?jQuery選擇一個額外的散列

HTML:

<li><a href="blah" id="#id"></a></li> 
<button id="clickme">click it</button> 

的jQuery:

$('#clickme').click(function() { 
    ('##id').parent().addClass('active'); 
}); 

任何幫助,將不勝感激。

回答

-1

#是爲id s保留的特殊符號。你不應該在id的名字中使用它。爲什麼要這樣做有特定的原因嗎?

+2

不是一個真正的答案..你可以用逃避它''\\只是 – 2013-04-26 19:43:59

+1

因爲你可以通過轉義得到解決的問題'#'並不意味着你應該。更好的解決方案是將父div的ID更改爲更可口的東西。 – FishBasketGordo 2013-04-26 19:56:05

1

它通常是一個壞主意,在選擇特殊字符,但你永遠可以逃脫他們:

$('#clickme').click(function() { 
    $('#\\#id').parent().addClass('active'); 
}); 

FIDDLE

5

documentation

要使用任何的元字符(如!"#$%&'()*+,./:;<=>[email protected][\]^ {|}〜`)作爲名稱的文字部分,必須用兩個反斜槓進行轉義:\\

So $('#\\#id') should work,但我真的建議不使用#作爲ID的一部分,以避免任何可能出現的問題。例如,我不認爲有逃避CSS規則中的字符(我可能是錯誤的)或使用ID作爲目標(如<a href="##id"></a>)也可能不起作用。

+0

不知道這一點,但我有一個暗示,這是問題。謝謝您的幫助。 – alrightgame 2013-04-26 19:52:39

0

按照W3C

ID和名稱標記必須以字母開頭([A-ZA-Z])和之後可以是任何數量的字母,數字([0-9 ]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。

你真的不應該有一個ID爲#id的元素。是的,你可以像其他人所建議的那樣通過轉義額外散列來解決分析問題,但更好的解決方案是爲父分區提供更好的ID,而不需要特殊處理。

+1

真正的HTML 4,但允許在HTML5 http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – Turnip 2013-04-26 19:47:30

+1

我仍然說這不是一個非常好主意。 HTML的版本沒有被指定,OP也沒有提供一個爲什麼ID不能被改變的情況。 – FishBasketGordo 2013-04-26 19:51:26

+1

主觀。對於一些人和編碼習慣來說可能是有意義的。雖然我不會自己做 – Turnip 2013-04-26 19:53:18

相關問題