2010-02-10 2 views
1

В методе ниже я могу искать дивы с классом панели для текста обув и подчеркнуть текст, содержащийся в:параметра Jquery Pass для фильтрации заявления с содержит пункт

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

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

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

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

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

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

ответ

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

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

+0

Да, это отлично работает, спасибо. Должно быть, это было мое сочетание одиночных и двойных кавычек, которые мешали мне работать для меня. –

0

Даже если вам удастся заставить селектор работать, вы выберете весь содержащий элемент (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); 
    }); 
} 

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

+0

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

Смежные вопросы