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

时间:2012-02-15 06:40:15

标签: jquery variables jquery-selectors special-characters quotes

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

id="Peoples' Choice"

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

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

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

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

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

帮助?

3 个答案:

答案 0 :(得分:9)

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

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

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

DEMO

答案 1 :(得分:4)

id s中不能包含空格。只需使用peoples-choice
从w3,http://www.w3.org/TR/html4/types.html

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

答案 2 :(得分:0)

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

试试这个

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

而不是

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