【问题标题】:JQuery selector problem in Internet ExplorerInternet Explorer 中的 JQuery 选择器问题
【发布时间】:2010-12-04 18:04:20
【问题描述】:

我有一个 jquery 选择器,看起来像:

var val = "John's cars";
$('#subject input[value="'+val+'"]')

这在 Firefox、Chrome、Internet Explorer 8 中运行良好,但在 IE 6 或 IE7 中则不行。 问题是文本搜索中的'。 除了遍历所有有问题的输入并进行字符串比较之外,有人知道如何解决这个问题吗?

【问题讨论】:

    标签: jquery internet-explorer jquery-selectors


    【解决方案1】:

    试试这个:

    var val = "John's cars";
    $('#subject input').filter(function() {
        return this.value == val;
    });
    

    【讨论】:

      【解决方案2】:

      尝试使用反斜杠转义 '

      var val = "John\'s cars";
      $('#subject input[value="'+val+'"]')
      

      来自jQuery

      选择器中的特殊字符

      如果您想使用任何 上述元字符描述为 名字的字面部分,你必须 用反斜杠转义字符 ()。由于 Javascript 使用 转义序列的反斜杠 字符串文字,你必须使用两个 字符串文字中的反斜杠 (\) 所以 将放置一个反斜杠 进入字符串。

      例子:

      "#foo\\:bar"
      "#foo\\[bar\\]"
      "#foo\\.bar"
      

      需要的字符的完整列表 被转义:#;&,.+*~':"!^$[]()=>|/

      编辑:

      由于该值在字符串文字中,因此需要进行双重转义。所以这行得通

      var val = "John\\'s cars";
      $('#subject input[value="'+val+'"]')
      

      感谢bobince 指出。

      【讨论】:

      • @Ulf - 你使用的是哪个版本的 jQuery?
      • 嗯...奇怪。它似乎也不适用于 Firefox 3.5。看起来使用filter 是最好的方法
      • 你的\' 是一个JavaScript 字符串文字,它的意思是'。您需要另一个级别的转义:"John\\'s cars" 将真正的反斜杠字符放入选择器字符串中。 [亲爱的主,StackOverflow 自己对反斜杠的处理被破坏了......]
      • @bobince - 谢谢!我认为这可能是我错过的一些小东西:)
      【解决方案3】:

      我敢打赌它是搜索值中的撇号 - 尝试使用

      转义它
      "John\'s cars"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        相关资源
        最近更新 更多