2

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

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

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

4

3 回答 3

4

试试这个:

var val = "John's cars";
$('#subject input').filter(function() {
    return this.value == val;
});
于 2009-10-07T19:21:51.700 回答
3

尝试'用反斜杠转义

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指出这一点。

于 2009-10-07T19:23:02.940 回答
0

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

"John\'s cars"
于 2009-10-07T19:23:15.063 回答