2011-11-12 121 views
3

我有一個div列表,每個都有一個id。該ID還表示爲鏈接:"http://en.wikipedia.org/wiki/" + id是該條目的維基百科上的鏈接,"/image/" + id + ".jpg"是本項目的本地圖像。jquery中的特殊字符

但我有一些特殊字符的編號。有兩種類型(我發現有bug):首先,A_(B),包含括號,第二A%C3%A9B(AéB),包含特殊字母。我知道()可以換成%28%29,所以它基本上只有一種類型。我已經測試過,這種名字適用於圖像和維基鏈接。

問題是,當我使用jQuery時,$('#' + id)找不到具有特殊字母的對象。任何人有任何想法如何處理它?

回答

0

有關更多信息,請參見this SO question

就我個人而言,我認爲身份證應符合人類可讀,易於理解的ID。考慮使用不同的機制來附加網址,例如jQuery的$.data或另一個沒有有效性限制的屬性。

+0

我相信,所以它會容易得多我用標題來記錄該鏈接名稱改爲 – DrXCheng

1

你嘗試過:

var id = encodeURIComponent(id); 
$('#' + id); 

,看它是否解決了呢?

+0

做了這個幫助還是工作? –

2

如果您看看selectors頁面的第二段,它會告訴您這些字符!"#$%&'()*+,./:;<=>[email protected][\]^``{|}~在使用時需要轉義。

但是,如果您包含其他字符,最好使用其轉義碼來包含它們(google closure compiler將自動爲您執行此操作)。所以這個字母é可以替換爲\u00e9

0

一個很好的經驗法則是首先符合相關規範。根據HTML 4.01

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

因此,在元素ID或名稱中不允許使用像(,)和%這樣的字符。

ids中的不合格字符很可能會導致jQuery以外的問題。使用encodeURIComponent(例如,要替換(使用%28)也無濟於事,因爲%字符也是不允許的,但是您可以使用字符實體去除典型az,AZ範圍外的字母,或者您可以使用普通的舊的document.getElementById如果你真的需要使用jQuery:。

$(document.getElementById(id)) 

可能就足夠了(但不可靠)