Как избежать скобок в селекторе jQuery? - PullRequest
10 голосов
/ 20 июля 2009

Я пытаюсь проверить, содержит ли внутренний текст td круглые скобки (). Причина в том, что я отображаю отрицательные числа как (1000), и мне нужно преобразовать их в -1000, чтобы сделать математику Я пробовал пару разных способов, но не могу понять, как это правильно. Я знаю, что есть не-jQuery способы сделать это, но на данный момент это просто меня беспокоит.

$(tdElement[i]).find("\\(").length > 0 

Это не выдает ошибку, но не находит внутренний текст (1000):

$(tdElement[i]).find("\\(")
{...}
    context: {object}
    jquery: "1.3.1"
    length: 0
    prevObject: {...}
    selector: "\("

Другой метод, который я попробовал, был:

$("#fscaTotals td").filter(":contains('\\(')")

Выдает ошибку «Исключение выброшено и не поймано». Похоже, работает для других персонажей, хотя. Пример: . ,; <>

Итак, как избежать скобок в jQuery?

Ответы [ 3 ]

9 голосов
/ 20 июля 2009

Я думаю, вам придется использовать функцию фильтра, например:

$('#fscaTotals td *').filter(function(i, el) {
    return !!$(el).text().match(/\(/);
});

Редактировать: Я думаю, что это ошибка в jQuery :contains().

3 голосов
/ 20 июля 2009

Вы можете добавить фильтр RegEx

Этот метод объясняется в этой записи в блоге

$.extend($.expr[':'], {  
    regex: function(a, i, m, r) {  
        var r = new RegExp(m[3], 'i');  
        return r.test(jQuery(a).text());  
    }  
});

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

("#fscaTotals td:regex('\([0-9]*\)')")

Кстати, я протестировал приведенный выше пример RegEx с RegexBuddy и думаю, что он подходит для ваших нужд.

0 голосов
/ 20 июля 2009

Я не часто использую jQuery, но проблема с вашим первым заключается в том, что вы пытаетесь поместить текст там, где он должен быть селектором - тогда вы пытались использовать селектор «: Содержит», но затем вы попытались экранировать "(". Вы пробовали $ ("# fscaTotals td"). фильтр (": Содержит ('(')")? Использовать содержит, но не пытаться экранировать скобки.

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