2009-10-07 2 views
2

У меня есть селектор JQuery, который выглядит как:JQuery проблема селектор в Internet Explorer

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

Это отлично работает в Firefox, Chrome, Internet Explorer 8, но не в IE 6 и IE7. Проблема заключается в «поиске текста». У кого-то есть идея, как обойти эту проблему, за исключением того, чтобы перебирать все входящие данные и сравнивать строки?

ответ

4

Попробуйте это:

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

Работает как шарм, благодаря –

3

Попробуйте уйти от ' с обратным косой чертой

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

из jQuery

Специальных символов в селекторах

Если вы И h для использования любого из метасимволов , описанных выше, как буквальная часть имени , вы должны избежать символа с обратной косой чертой (). Так как JavaScript использует обратную косую черту для escape-последовательностей в строковых литералах , вы должны использовать две обратные косые черты (\) в строковых литералах, поэтому , чтобы в колонку была вставлена ​​одна обратная косая черта .

Пример:

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

Полный список символов, которые должны быть экранированы: #;&,.+*~':"!^$[]()=>|/

EDIT:

, так как значение в строковый литерал, он должен быть сдвоен. Так это работает

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

Благодаря bobince для указания его.

+0

Это на самом деле не работает (по крайней мере, не в IE6) –

+0

@Ulf - какую версию jQuery вы используете? –

+0

Я использую jQuery 1.3.2 –

0

Я держал пари, что это апостроф в значении поиска - попробуйте избежать его, используя

"John\'s cars"