包含引号的jquery属性选择器变量?
我想选择一个具有以下ID的输入框:包含引号的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='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中不允许使用空格,所以您不应该使用空格。)。