包含引号的jquery属性选择器变量?
Posted
技术标签:
【中文标题】包含引号的jquery属性选择器变量?【英文标题】:jquery attribute selector variable that contains a quote? 【发布时间】:2012-03-06 12:50:31 【问题描述】:我想选择一个ID如下的输入框:
id="Peoples' Choice"
如果我手动输入带有转义字符的选择器,它会起作用:
$("[id='Peoples\\' Choice']")
但如果我使用变量,它似乎不起作用:
var theID = "Peoples' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
这会产生一个语法错误,即无法识别的表达式。
我什至尝试用双反斜杠+引号替换 theID
中的引号。
帮助?
【问题讨论】:
【参考方案1】:在属性选择器中使用变量之前,您可以转义变量中的特殊字符。
您可以使用以下正则表达式:
var sel = "[id='" + theID.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1') + "']"
DEMO
【讨论】:
这适用于您的示例,但是当 ID 中有空格时它会失败 :( 这可能是错误的 html,但是有没有办法用这个 sn-p 处理它? 我已经更新了小提琴,它也适用于空格......虽然 ID 中不允许使用空格,所以你不应该使用它们。【参考方案2】:id
s 中不能有空格。只需使用peoples-choice
。
来自 w3,http://www.w3.org/TR/html4/types.html
ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,并且可以是 后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、 下划线(“_”)、冒号(“:”)和句点(“.”)。
【讨论】:
嗯,显然我工作的现有系统可以拥有它:/ 也许 jquery 根本不在乎它? 我是网络新手,没有太多经验,但在工作中,就是这样,它适用于带有空格但没有特殊字符的 id。 我不反对,但我怀疑这里的人们会考虑重写大量代码:( @ForeverLearnNeverMaster:至少建议一下。这是不对的。【参考方案3】:我们不能把 (') 放进去 id 但你仍然可以试试这个
试试这个
var theID = "Peoples\' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
而不是
var theID = "Peoples' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
【讨论】:
以上是关于包含引号的jquery属性选择器变量?的主要内容,如果未能解决你的问题,请参考以下文章