Internet Explorer中的JQuery选择器问题

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

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

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

试试这个:

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

尝试用反斜杠逃避'

 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指出它。

我敢打赌它是搜索值中的撇号 – 尝试使用它来逃避它

 "John\'s cars"