2

我要選擇它具有以下ID輸入框:包含引用的jquery屬性選擇器變量?

id="Peoples' Choice"

如果我手動輸入與轉義字符的選擇,它的工作原理:

$("[id='Peoples\\' Choice']")

但是,如果我使用一個變量,它似乎並不工作:

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

這噴出來語法錯誤說無法識別的表達式。 我甚至嘗試用雙反斜槓+報價替換theID中的報價。

幫助?

回答

6

你可以在你的屬性選擇用逃避它在變量前的特殊字符。

您可以使用下面的正則表達式:

var sel = "[id='" + theID.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1') + "']" 

DEMO

+0

這適用於你的榜樣,但是當有一個在ID空間失敗:(這可能是錯誤的HTML,但有什麼辦法來處理這個片段? – ForeverLearnNeverMaster 2012-02-15 07:00:43

+0

我已經更新了小提琴,它作爲以及與空間......雖然空間不容許的ID,所以你不應該有他們。 – 2012-02-15 07:19:56

+0

是的,它的作品。謝謝。 – ForeverLearnNeverMaster 2012-02-15 07:25:31

4

id s不能在它的空間。只需使用peoples-choice
從W3,http://www.w3.org/TR/html4/types.html

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

+0

那麼,顯然現有的系統,我的工作可以有它:/ jQuery的可能不給它該死? – ForeverLearnNeverMaster 2012-02-15 06:45:19

+0

他們不能,檢查http://mathiasbynens.be/notes/html5-id-class – Matijs 2012-02-15 06:47:52

+1

這不是有效的HTML。只要使用'人民選擇'。請參閱編輯。 – elclanrs 2012-02-15 06:49:06

1

我們不能把(')在 ID,但你仍然可以試試這個

試試這個

var theID = "Peoples\' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

而不是

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel);