2015-02-24 63 views
0

我正在使用一些遺留代碼並嘗試將其更新爲更新版本的jQuery。我遇到的其中一個錯誤是,括號現在需要轉義或jQuery引發錯誤。爲jQuery選擇跳轉方括號選擇

我有一個包含這樣括號中的attrib_id:

group[12345][qf_attrib_12345] 

該值被存儲在一個選擇元件的名稱屬性。爲了以免jQuery拋出一個錯誤,當我嘗試選擇這個元素我一直在試圖逃跑,像這樣的括號:

var escapeAttribId = attrib_id.replace(/\[/g, "\\["); 
var escapeAttribId = escapeAttribId.replace(/\]/g, "\\]"); 

如果我提醒escapeAttribId出它具有以下值屏幕:

group\[26782\]\[qf_attrib_16078\] 

這是我所期望的。然而,當我嘗試使用這個新的轉義版本,像這樣來選擇:

var att_default = master_selects.filter("[name="+escapeAttribId+"]").attr('value'); 

一些我仍與下面的警告得到一個錯誤的時間:

Error: Syntax error, unrecognized expression: [name='group\[26782\']\[qf_attrib_16078\]] 

的單引號被裏面添加我逃脫的字符串。我確定這是導致語法錯誤。有誰知道可以將這個單引號的位置移到我的字符串內嗎?

+1

不應在屬性選擇具有的屬性值引號包圍,即:'.filter('[NAME = ''+ escapeAttribId +'「]')' – 2015-02-24 20:04:53

+0

事實上,在[快速測試](http://jsfiddle.net/4g3uwj29/)中,只要值被引用,您就不需要跳過括號 – 2015-02-24 20:08:22

+0

明白了,謝謝@James Thorpe – sage88 2015-02-24 20:12:43

回答

1

而不是逃避方括號,可以改爲引用屬性的值:

var att_default = master_selects.filter('[name="' + attrib_id+ '"]').attr('value');