Internet Explorer 中的 JQuery 选择器问题

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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" 将真正的反斜杠字符放入选择器字符串中。 [亲爱的主,*** 自己对反斜杠的处理被破坏了......] @bobince - 谢谢!我认为这可能是我错过的一些小东西:)【参考方案3】:

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

转义它
"John\'s cars"

【讨论】:

以上是关于Internet Explorer 中的 JQuery 选择器问题的主要内容,如果未能解决你的问题,请参考以下文章

CSS Internet Explorer 5.5 - 6中的PNG支持,带有工作链接

Internet Explorer 9 中的渐变

Internet Explorer 中的 CSS“未设置”/“初始”

Internet Explorer 中的 JQuery 选择器问题

Internet Explorer 忽略 URL 中的 Hashtag

Internet Explorer 中的渐变颜色