Javascript 在jQuery中如何实现这一点?(匹配特定单词并使其成为颜色)

Javascript 在jQuery中如何实现这一点?(匹配特定单词并使其成为颜色),javascript,jquery,dom,Javascript,Jquery,Dom,我有几个html文本段落,我想浏览.content中的每个段落,如果它包含单词“Hello”或“Hello”(或任何大小写的变体),我只想将该单词变成蓝色。“再见”也一样,只是要用红色。突出显示整行: $("div:contains('hello')").css("color", "blue"); 编辑:由于问题已更改为仅突出显示单词,您可以在此处找到答案,例如: 或者干脆使用别人提到的插件 编辑: 或者简单地说: ​$("div"​)​.each(function() { this.

我有几个html文本段落,我想浏览.content中的每个段落,如果它包含单词“Hello”或“Hello”(或任何大小写的变体),我只想将该单词变成蓝色。“再见”也一样,只是要用红色。

突出显示整行:

$("div:contains('hello')").css("color", "blue");
编辑:由于问题已更改为仅突出显示单词,您可以在此处找到答案,例如: 或者干脆使用别人提到的插件

编辑: 或者简单地说:

​$("div"​)​.each(function() {
    this.innerHTML = this.innerHTML.replace(/(hello)/g, "<span style='color: red'>$1</span>");
    this.innerHTML = this.innerHTML.replace(/(goodbye)/g, "<span style='color: blue'>$1</span>");
})​;​
​$(“部门”​)​.每个(函数(){
this.innerHTML=this.innerHTML.replace(/(hello)/g,“$1”);
this.innerHTML=this.innerHTML.replace(/(再见)/g,“$1”);
})​;​

要忽略但保留大小写,请使用正则表达式。

突出显示整行:

$("div:contains('hello')").css("color", "blue");
编辑:由于问题已更改为仅突出显示单词,您可以在此处找到答案,例如: 或者干脆使用别人提到的插件

编辑: 或者简单地说:

​$("div"​)​.each(function() {
    this.innerHTML = this.innerHTML.replace(/(hello)/g, "<span style='color: red'>$1</span>");
    this.innerHTML = this.innerHTML.replace(/(goodbye)/g, "<span style='color: blue'>$1</span>");
})​;​
​$(“部门”​)​.每个(函数(){
this.innerHTML=this.innerHTML.replace(/(hello)/g,“$1”);
this.innerHTML=this.innerHTML.replace(/(再见)/g,“$1”);
})​;​

要忽略但保留大小写,请使用
/(hello)/ig
正则表达式。

您可以使用名为highlight的jQuery插件

稍加修改的版本,可用于不同的样式。

您可以使用一个名为highlight的jQuery插件

稍加修改的版本,可用于不同的样式。

我有一个插件可以让这一切变得简单,这里有一个小把戏:

更新
因为没有关于这个插件的文档,我想我应该发布一些

$(selector).highlightText(string, class, onlyfullmatches)
string
可以是任何字符串或正则表达式。如果是字符串,它将不区分大小写,这意味着hello将匹配hello。如果是regexp,它将按原样使用

class
可以是单个类,也可以是以空格分隔的类列表


onlyfullmatches
应该是一个布尔值,默认为false。如果为true,插件将只匹配完整匹配项,而不是部分匹配项。例如,如果为false,
hello
将匹配字符串
hellow
我有一个插件可以简化此过程,这里有一个小把戏:

更新
因为没有关于这个插件的文档,我想我应该发布一些

$(selector).highlightText(string, class, onlyfullmatches)
string
可以是任何字符串或正则表达式。如果是字符串,它将不区分大小写,这意味着hello将匹配hello。如果是regexp,它将按原样使用

class
可以是单个类,也可以是以空格分隔的类列表


onlyfullmatches
应该是一个布尔值,默认为false。如果为true,插件将只匹配完全匹配,而不是部分匹配。例如,如果为false,
hello
将匹配字符串
hellow

遍历每个p标记,检查文本,分配css:

jsFiddle()

$('p')。每个(函数(索引)
{
替换为颜色($(此)、“你好”、“蓝色”);
替换为颜色($(此)、“再见”、“红色”);
});
函数replaceWithColor(对象、单词、颜色)
{
var index=$(object.html().toLowerCase().indexOf(word);
如果(索引>-1)
{
var before=$(object.html().substring(0,index);
var theWord=$(object.html().substring(index,index+word.length);
var after=$(object.html().substring(index+word.length);
$(object).html(在+“”+单词+“”+之后);
}
}

遍历每个p标记,检查文本,分配css:

jsFiddle()

$('p')。每个(函数(索引)
{
替换为颜色($(此)、“你好”、“蓝色”);
替换为颜色($(此)、“再见”、“红色”);
});
函数replaceWithColor(对象、单词、颜色)
{
var index=$(object.html().toLowerCase().indexOf(word);
如果(索引>-1)
{
var before=$(object.html().substring(0,index);
var theWord=$(object.html().substring(index,index+word.length);
var after=$(object.html().substring(index+word.length);
$(object).html(在+“”+单词+“”+之后);
}
}

无需插件即可完成此操作:

$("p").each(function() {
    if ($(this).children().length == 0) {
        var txt = $(this).text();
        var blue = /hello/i.exec(txt);
        var red = /goodby/i.exec(txt);
        if (blue) {
            $(this).html(txt.replace(/hello/i, '<span class="blue">' + blue + '</span>'));
        } else if (red) {
            $(this).html(txt.replace(/goodbye/i, '<span class="red">' + red + '</span>'));
        }
    }
});
$(“p”)。每个(函数(){
if($(this.children().length==0){
var txt=$(this.text();
var blue=/hello/i.exec(txt);
var red=/goodby/i.exec(txt);
如果(蓝色){
$(this.html(txt.replace(/hello/i,“+blue+”);
}否则,如果(红色){
$(this.html(txt.replace(/bye/i,“+red+”);
}
}
});

请参见

无需插件即可完成此操作:

$("p").each(function() {
    if ($(this).children().length == 0) {
        var txt = $(this).text();
        var blue = /hello/i.exec(txt);
        var red = /goodby/i.exec(txt);
        if (blue) {
            $(this).html(txt.replace(/hello/i, '<span class="blue">' + blue + '</span>'));
        } else if (red) {
            $(this).html(txt.replace(/goodbye/i, '<span class="red">' + red + '</span>'));
        }
    }
});
$(“p”)。每个(函数(){
if($(this.children().length==0){
var txt=$(this.text();
var blue=/hello/i.exec(txt);
var red=/goodby/i.exec(txt);
如果(蓝色){
$(this.html(txt.replace(/hello/i,“+blue+”);
}否则,如果(红色){
$(this.html(txt.replace(/bye/i,“+red+”);
}
}
});
请参见类似的内容

$('p').each(function() {
    var html = $(this).html().replace(/L/gi, function(str) {
        var cls;
        if (str == str.toLowerCase()) {
            cls = 'blue';
        } else if (str == str.toUpperCase()) {              
            cls = 'red'; 
        }            
        return '<span class="' + cls + '">' + str + '</span>';
    });

    $(this).html(html);
});
$('p')。每个(函数(){
var html=$(this.html().replace(/L/gi,function(str){
var-cls;
if(str==str.toLowerCase()){
cls=‘蓝色’;
}如果(str==str.toUpperCase()){
cls=‘红色’;
}            
返回“+str+”;
});
$(this).html(html);
});

类似这样的东西

$('p').each(function() {
    var html = $(this).html().replace(/L/gi, function(str) {
        var cls;
        if (str == str.toLowerCase()) {
            cls = 'blue';
        } else if (str == str.toUpperCase()) {              
            cls = 'red'; 
        }            
        return '<span class="' + cls + '">' + str + '</span>';
    });

    $(this).html(html);
});
$('p')。每个(函数(){
var html=$(this.html().replace(/L/gi,function(str){
var-cls;
if(str==str.toLowerCase()){
cls=‘蓝色’;