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



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

id="Peoples' Choice"

如果我手动键入带有转义字符的选择器,它会起作用:

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

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

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

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

帮助?

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

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

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

DEMO

ids中不能有空格。只需使用peoples-choice即可
从w3,http://www.w3.org/TR/html4/types.html

ID和NAME标记必须以字母([a-Za-z])开头,并且可以是后跟任意数量的字母、数字([0-9])、连字符("-"),下划线("_")、冒号(":")和句点(".")。

我们不能将(')放入id,但你仍然可以尝试这个

试试这个

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

而不是

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

最新更新