使用jQuery查找并替换HTML字符串

时间:2013-03-04 14:17:10

标签: javascript jquery replace

数据库中的链接是网站标题,并在页面“Interesting Article:作者”上呈现 - 但有时链接是一个问题“Where's China?:GoogleMaps”。 ?:看起来很傻,所以我想用?</span>:替换HTML ?</span>

这是我制定的jQuery:

$('#relatedinfo ul li a').html().replace('?</span>:','?</span>');

但实际上并没有在DOM中取代它。如何让该字符串实际更改页面?

2 个答案:

答案 0 :(得分:19)

我建议:

$('#relatedinfo ul li a').html(function(index,html){
    return html.replace(/<\/span>(\:)/,'');
});

JS Fiddle demo

甚至:

$('#relatedinfo ul li a').text(function(index,text){
    return text.replace(':','');
});

JS Fiddle demo

更新的方法是检查span中的最后一个字符是否在['?','!','.']数组中,如果是,则从nextSibling的nodeValue中删除:

$('#relatedinfo ul li a span').text(function(index,text){
    var lastchar = text.split('').pop();
    if (['?','!','.'].indexOf(lastchar) > -1) {
        this.nextSibling.nodeValue = this.nextSibling.nodeValue.replace(':','');
    }
});

JS Fiddle demo

参考文献:

答案 1 :(得分:0)

您也可以使用正则表达式:

var rx = new RegExp('(?![^<&]+[>;])' + searchString, 'gi');

$('#relatedinfo').html(function (i, html) {
   return html.replace(rx, '<b>$&</b>')
});

来源:jQuery to Find/Replace html text when not inside an html tag other than P, DIV, SPAN, TD