Javascript 如何使用jQuery:contains(一些文本)选择器,但只选择";“一些文本”;从「;这是一段文字;?

Javascript 如何使用jQuery:contains(一些文本)选择器,但只选择";“一些文本”;从「;这是一段文字;?,javascript,jquery,Javascript,Jquery,可能重复: 如何使用jQuery:contains(some text)选择器,但仅从“this is some text”中选择“some text” 我有这样的想法: <div class="search">this is some text</div> $("div.search:contains(some text)").css("text-decoration","underline"); 但这强调了“这是一些文本”,我希望它只强调“一些文本” 如何最简单

可能重复:

如何使用jQuery:contains(some text)选择器,但仅从“this is some text”中选择“some text”

我有这样的想法:

<div class="search">this is some text</div>
$("div.search:contains(some text)").css("text-decoration","underline");
但这强调了“这是一些文本”,我希望它只强调“一些文本”


如何最简单地完成这一点?

您必须使用正则表达式将内部文本用自己的元素包装起来:

$('div.search:contains(some text)').html(function (i, v) {
    return v.replace('some text', '<span>some text</span>');
})
.find('span').css('text-decoration', 'underline');
$('div.search:contains(some text)).html(函数(i,v){
返回v.replace('some text','some text');
})
.find('span').css('text-decoration','underline');

仅当
div.search
中没有嵌套元素时才使用此选项。如果有,那么这是一场完全不同的球赛。

你可以撕开jQuery highlight插件之类的东西,看看它们是如何做到的。或者您可以按原样使用插件,只需修改应用的css类,使其包含下划线而不是黄色背景色

不一定能回答这个问题,但是如果你是为了功能而不是学习。。。不要重新发明轮子


Nop,不能这样做,至少需要一些正则表达式魔法,检查一下你正在将css应用于div,而不是文本,因此行为是正确的。您可以拆分
.html()
并用所需的样式包装
。这几乎正是我需要的。单击另一个单词后,我需要突出显示第二个单词,并保持突出显示第一个单词。只需不调用removeHighlight(),您可以根据需要突出显示任意多个不同的单词。