包含引号的jquery属性选择器变量?

For*_*ter 3 variables quotes jquery special-characters jquery-selectors

我想选择一个具有以下ID的输入框:

id="Peoples' Choice"

如果我手动输入带有转义字符的选择器,它可以工作:

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

但是,如果我使用变量,它似乎不起作用:

var theID = "Peoples' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
Run Code Online (Sandbox Code Playgroud)

这会发出一个语法错误,指出无法识别的表达式.我甚至尝试用theID双反斜杠+引号替换引号.

救命?

Did*_*hys 9

在属性选择器中使用变量之前,可以转义变量中的特殊字符.

您可以使用以下正则表达式:

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

DEMO