2015-02-24 29 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');