Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含引号的jquery属性选择器变量?_Jquery_Variables_Jquery Selectors_Special Characters_Quotes - Fatal编程技术网

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

包含引号的jquery属性选择器变量?,jquery,variables,jquery-selectors,special-characters,quotes,Jquery,Variables,Jquery Selectors,Special Characters,Quotes,我想选择一个具有以下ID的输入框: id=“人民的选择” 如果我手动键入带有转义字符的选择器,它将起作用: $(“[id='Peoples\'Choice']”) 但如果我使用变量,它似乎不起作用: var theID = "Peoples' Choice"; var sel = "[id='" + theID + "']" chk = $(sel); 这会抛出一个语法错误,表示无法识别表达式。 我甚至尝试用双反斜杠+引号替换theID中的引号 帮助?ids中不能有空格。只需使用人们的选择 来

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

id=“人民的选择”

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

$(“[id='Peoples\'Choice']”)

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

var theID = "Peoples' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
这会抛出一个语法错误,表示无法识别表达式。 我甚至尝试用双反斜杠+引号替换
theID
中的引号


帮助?

id
s中不能有空格。只需使用
人们的选择

来自w3

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


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

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

var sel = "[id='" + theID.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1') + "']"
我们不能把(')放进去 但你还是可以试试这个

试试这个

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

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

好吧,显然我工作的现有系统可以使用它:/jquery可能一点都不在乎?我对web内容不熟悉,也没有太多经验,但在工作中,它就是这样,它适用于带有空格但没有特殊字符的ID。我不反对,但是我怀疑这里的人们会考虑重写一大堆代码:(永远):至少建议它。这是不对的。这对你的例子来说是有效的,但是当ID中有空格时,它就失败了:(这可能是错误的HTML,但是有没有办法用这个代码段来处理这个问题?我已经更新了fiddle,它也适用于空格…虽然IDs中不允许使用空格,所以您不应该使用空格。)。