用html替换多个字符,只有一个函数

时间:2015-05-25 09:16:12

标签: javascript jquery html

我有一个脚本用html标签替换某些单词:

$("body").children().each(function () {
    $(this).html( $(this).html().replace("#stern","<b>"));
    });

$("body").children().each(function () {
    $(this).html( $(this).html().replace('#$stern',"</b>") );
    });

它运行良好,但我想将#$stern合并到与#stern相同的函数中,因为它会加载更快,我想对不同的标签做同样的事情,而不是单调乏味地写每一个。

注意:(我知道{@ 1}}已被弃用,这只是一个例子)

修改  它还应该替换多个<b>而不是一个

3 个答案:

答案 0 :(得分:3)

使用替换方法的链接:

$("body").children().each(function () {
 $(this).html( $(this).html().replace("#stern","<b>").replace('#$stern',"</b>"));
});

答案 1 :(得分:1)

您可以使用以下内容,而不是循环和替换body中的每个元素。这将更快

var bodyHtml = $('body').html();
bodyHtml.replace(/#stern/i, "<b>").replace(/#\$stern/i, '</b>');
$('body').html(bodyHtml);



或者,您可以在regex内使用replace较慢),如下所示:

$("body").children().each(function() {
    $(this).html($(this).html().replace(/#stern/i, "<b>").replace(/#\$stern/i, '</b>'));
});
  1. /regex
  2. 的分隔符
  3. #:匹配#
  4. ():匹配小组
  5. \$:匹配$,应由\
  6. 转义
  7. ?:匹配零个或前一个字符
  8. i:不区分大小写匹配

答案 2 :(得分:0)

你可以使用html的回调并在参数的字符串上运行两个替换

$("body").children().html(function (_, html) {
    return html.replace(/\#stern/g,"<b>").replace(/\#\$stern/g,"</b>");
});

FIDDLE

这可以节省六个函数调用和两个循环