2011-10-31 78 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