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

14
链接来自数据库的网站标题,在页面上呈现为 "有趣的文章:作者",但偶尔链接是一个问题 "中国在哪里?:GoogleMaps"。 ?: 看起来很傻,所以我想用 HTML ?</span>: 替换它。
这是我想出的jQuery代码:$('#relatedinfo ul li a').html().replace('?</span>:','?</span>');
但这实际上没有在DOM中替换它。 我如何使该字符串实际更改页面?
2个回答

26

我建议:

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

JS Fiddle演示

甚至可以这样:

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

JS Fiddle演示

一种更新的方法是检查中最后一个字符是否属于['?', '!', '.']数组,如果是,则从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演示

参考资料:


非常感谢您的回答,很抱歉这么晚才回复。答案是正确的,但我错误地表达了我的问题,所以解决方案并不完全适合我的问题。我已经分叉了这个fiddle,使用您提供的信息,解决了大部分问题...只是无法弄清楚if语句中OR操作数的语法。最终我用!= null解决了它 :) - Daniel

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接