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 中的 CSS“未设置”/“初始”
Internet Explorer 中的 JQuery 选择器问题