Проблема селектора jQuery при использовании одной круглой скобки - PullRequest
2 голосов
/ 24 июня 2011

Если я включу одну скобку в селектор: Содержит, я получаю ошибку.

, например

$("a:contains('Speed (mph')")

возвращает ошибку

Синтаксическая ошибка, нераспознанное выражение: (Миль / ч ')

если я добавлю закрывающую скобку в конце, оператор выполнится нормально. однако мне нужно иметь возможность запрашивать, где часто встречается одна скобка.

Что здесь происходит и как мне обойти это?

EDIT

В моем реальном коде часть: содержит передается как переменная

1020 * например *

var searchText = 'Speed (mph';
var result = $("a:contains('" + searchText  + "')");

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Вы должны иметь возможность использовать $("a:contains('Speed \\(mph')")

С http://api.jquery.com/category/selectors/

Если вы хотите использовать любой из мета-символов (например,! "# $%& '() * +,. / :; <=>? @ [] ^ `{|} ~) как буквальная часть имени, вы должны экранировать символ с двумя обратными слешами: \. Например, если у вас естьэлемент с id = "foo.bar", вы можете использовать селектор $ ("# foo \ .bar"). Спецификация CSS W3C содержит полный набор правил, касающихся допустимых селекторов CSS.

0 голосов
/ 28 июня 2011

Начиная со ссылки Мэтью Флэшена, вы можете использовать функцию фильтра следующим образом:

    var searchRegex = new RegExp("Speed \\(mph","g");
    var result = $('a').filter(function(i, el) {
        return $(el).text().match(searchRegex);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...