【问题标题】:How to use ampersand (&) symbol inside jQuery selectors如何在 jQuery 选择器中使用 & 符号
【发布时间】:2012-03-07 08:16:54
【问题描述】:

我有一个 <select> 菜单,其中包含一堆 <option> 标记,全部从数据库表中填充。

我需要使用诸如 $('option[value=d&c]') 之类的 jquery 选择器来找到诸如此类的选项:

<option value="d&c">d&amp;c</option>

请注意,value 属性中没有编码的 & 符号 (&amp;amp;),只是一个直的 & 符号 (&amp;),因为 Zend Framework 填充它的方式。

唯一的问题是 jQuery 因以下错误而窒息:

uncaught exception: Syntax error, unrecognized expression: [value=d&c]

它也不接受$('option[value=d&amp;amp;c]')。无论哪种情况,都是&符号搞砸了。有谁知道如何绕过这个限制?

【问题讨论】:

    标签: jquery jquery-selectors html-entities ampersand


    【解决方案1】:

    你错过了价值周围的引号

    这行得通:

    $('option[value="d&c"]')
    

    jsFiddle

    【讨论】:

    • 这个版本和转义版本都有效,但是我给引用的 value= 点,因为这是首选语法:api.jquery.com/attribute-equals-selector
    • 这么简单,但我就是想不出来。谢谢!
    • 这不是首选语法。检查值描述下的粗体文本,上面写着“值 - 属性值。可以是不带引号的单个单词或带引号的字符串。”
    • @SKS - 考虑到他们自己的所有示例都使用引号语法,我会说这是更可取的。
    【解决方案2】:

    尝试逃避它...

    $('option[value=d\\&c]')
    

    jsFiddle.

    ...或使用文档中推荐的引号。

    【讨论】:

      【解决方案3】:

      当您在引号中设置选项值时它会起作用:

      $(function() {
          alert($("option[value='d&c']").text());       
      });
      

      http://jsfiddle.net/fGTRv/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 2011-05-17
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多