Проблема селектора JQuery в Internet Explorer - PullRequest
2 голосов
/ 07 октября 2009

У меня есть селектор jquery, который выглядит следующим образом:

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

Это прекрасно работает в Firefox, Chrome, Internet Explorer 8, но не в IE 6 или IE7. Проблема в поиске текста. Кто-то имеет представление о том, как обойти эту проблему, кроме как обойти все входные данные и сравнить строки?

Ответы [ 3 ]

4 голосов
/ 07 октября 2009

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

var val = "John's cars";
$('#subject input').filter(function() {
    return this.value == val;
});
3 голосов
/ 07 октября 2009

Попробуйте экранировать ' с обратной косой чертой

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

из jQuery

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

Если вы хотите использовать любой из метасимволы, описанные выше как буквальная часть имени, вы должны избежать персонажа с обратной косой чертой (). Поскольку Javascript использует обратная косая черта для escape-последовательностей в строковые литералы, вы должны использовать два обратные косые черты (\) в строковых литералах так что будет поставлен один обратный слеш в строку.

Пример:

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

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

EDIT:

, поскольку значение находится в строковом литерале, его необходимо экранировать дважды. Так что это работает

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

Спасибо bobince за указание на это.

0 голосов
/ 07 октября 2009

Бьюсь об заклад, это апостроф в поисковом значении - попробуйте убрать его с помощью

"John\'s cars"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...