我有一个脚本用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>
而不是一个
答案 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>'));
});
/
:regex
#
:匹配#
()
:匹配小组\$
:匹配$
,应由\
?
:匹配零个或前一个字符i
:不区分大小写匹配答案 2 :(得分:0)
你可以使用html
的回调并在参数的字符串上运行两个替换
$("body").children().html(function (_, html) {
return html.replace(/\#stern/g,"<b>").replace(/\#\$stern/g,"</b>");
});
这可以节省六个函数调用和两个循环