Параметр jQuery Pass для оператора filter с предложением содержит - PullRequest
1 голос
/ 10 февраля 2010

В методе ниже я могу искать в div с классом bar текст foo и подчеркивать текст, содержащийся внутри:

function UnderlineText() {
    $(".bar").filter(":contains(foo)").css("text-decoration", "underline");
}

Но я бы хотел передать параметр методу вместо строки foo.

Я пробовал различные перестановки, как показано в предыдущем вопросе об устаревшем .contains

но я не могу заставить его работать.

Каков наилучший способ достичь этого?

function UnderlineText(searchText) {
    $(".bar").filter(":contains(*searchText*)").css("text-decoration", "underline");
}

Ответы [ 2 ]

4 голосов
/ 10 февраля 2010
function UnderlineText(searchText) {
    $(".bar").filter(":contains("+searchText+")").css("text-decoration", "underline");
}

решит проблему.

0 голосов
/ 10 февраля 2010

Даже если вам удастся заставить селектор работать, вы выделите весь содержащий элемент (p, span, div и т. Д.), Поэтому простой вызов css() в конечном итоге подчеркнет весь блок текста. Чтобы подчеркнуть конкретную часть, вам нужно использовать что-то вроде:

function underline(query) {
  $('.bar').filter(':contains("' + query+ '")').each(function() {
    var html = $(this).html();
    html = html.replace(query, '<span style="text-decoration: underline">' + query + '</span>';
    $(this).html(html);
  });
}

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

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