2011-10-31 79 views
6

HTML中的特定文本:使用jQuery .filter()選擇DIV

<p class="greeting"> 
    hello, my name is kevin. what's yours? 
</p> 

的jQuery:

$("p.greeting").filter(function(){ 
    return $this.text() === "my name is"; 
}).css("background", "green"); 

我試圖孤立的話 「我的名字叫」 在<p class="greeting">標籤。任何人都可以幫助我與jQuery,因爲它似乎不工作。謝謝。

+0

可能的重複http://stackoverflow.com/questions/926580/find-text-string-using-jquery – motoxer4533

回答

8

在這裏你去:

CSS:

.highlight { background-color: yellow; } 

的JavaScript:

var text = 'My namE iS'; 

$('p.greeting').html(function (i, html) { 
    var regexp, replacement; 

    regexp = RegExp('(' + text + ')', 'gi'); 
    replacement = '<span class="highlight">$1</span>'; 

    return html.replace(regexp, replacement); 
}); 

現場演示:http://jsfiddle.net/SGCDS/5/

+0

這看起來不錯,雖然要完全滿足問題的要求,您應該在上設置一些類,然後將.css該類設置爲「綠色」背景。 – Bruce

+0

真棒謝謝!有沒有一種簡單的方法讓'var text'不區分大小寫? – pruett

+1

@布魯斯很好的建議。我已經這樣做了。我更喜歡黃色的背景色。 OP可以改變它爲綠色... –

0

你的函數總是返回false。只有當你的div裏有「我的名字是」的時候,它纔會返回true。

嘗試是這樣的:

return $(this).text().indexOf("my name is") != -1; 
+0

嗯......似乎沒有工作。 -1是一個nodeType?我不熟悉這 – pruett

+1

我相信的是,如果text()不包含子字符串「我的名字是」,那麼.indexOf()將返回-1。 – Bruce