【问题标题】:jquery attribute selector variable that contains a quote?包含引号的jquery属性选择器变量?
【发布时间】:2012-03-06 12:50:31
【问题描述】:

我想选择一个ID如下的输入框:

id="Peoples' Choice"

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

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

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

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

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

帮助?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    DEMO

    【讨论】:

    • 这适用于您的示例,但是当 ID 中有空格时它会失败 :( 这可能是错误的 HTML,但是有没有办法用这个 sn-p 处理它?
    • 我已经更新了小提琴,它也适用于空格......虽然 ID 中不允许使用空格,所以你不应该使用它们。
    【解决方案2】:

    ids 中不能有空格。只需使用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);
    

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      相关资源
      最近更新 更多