2010-02-10 85 views
1

在下面的方法我可以搜索的div類酒吧的文本foo和下劃線的文本包含在:jQuery的傳遞參數與過濾語句包含子句

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

是的,這很好,謝謝。它一定是我的單引號和雙引號的組合,它阻止了它爲我工作。 – 2010-02-10 17:35:00

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

嗯,我當然認爲這是非常好的。也許有一個更優雅的解決方案,但強調搜索文本是一個很好的主意。 – 2010-02-10 18:28:41