如何多次替换相同的字符?

时间:2014-04-03 19:51:14

标签: javascript jquery replace

我需要替换其类与jQuery相同的所有元素的特定字符。考虑一下这个HTML代码:

<div class="product-name">
   <h1>Apple®</h1>
</div>

<div class="product-name">
   <h2>iPhone®</h2>
</div>

<div class="product-name">
   <h3>iPhone 5S®</h3>
</div>

我需要使用以下代码替换所有带有上标标记的字符:

$('.product-name').html(
  $('.product-name').html().replace(/®/gi, '<sup>&reg;</sup>')
);

但是,此代码将仅替换第一次出现。对于第二次及以后的事件,它将用第一个产品名称(包括h1标签)替换整个产品名称。

如何在不更改其他字符和标签的情况下只更换®字符?

2 个答案:

答案 0 :(得分:4)

您可以使用callback in html()将值返回到集合中的每个元素

$('.product-name').html(function(_, html) {
     return html.replace(/®/gi, '<sup>&reg;</sup>')
});

FIDDLE

答案 1 :(得分:1)

尝试 $('.product-name').html().split("®").join('<sup>&reg;</sup>');

要获得更完整的答案,

var body = $("body").html().split('®').join('<sup>&reg;</sup>');
$("body").html(body);

JS Fiddle