我需要替换其类与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>®</sup>')
);
但是,此代码将仅替换第一次出现。对于第二次及以后的事件,它将用第一个产品名称(包括h1标签)替换整个产品名称。
如何在不更改其他字符和标签的情况下只更换®字符?
答案 0 :(得分:4)
您可以使用callback in html()
将值返回到集合中的每个元素
$('.product-name').html(function(_, html) {
return html.replace(/®/gi, '<sup>®</sup>')
});
答案 1 :(得分:1)
尝试
$('.product-name').html().split("®").join('<sup>®</sup>');
要获得更完整的答案,
var body = $("body").html().split('®').join('<sup>®</sup>');
$("body").html(body);