javascript - 如何多次替换同一个字符?

标签 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 标签的第一个产品名称。

如何只替换 ® 字符而不更改其他字符和标签?

最佳答案

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

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

FIDDLE

关于javascript - 如何多次替换同一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847599/

相关文章:

javascript - 模态 Bootstrap - 键盘 ipad 在模态背景下添加空白

javascript - 方法链接似乎破坏了这个 d3 代码。为什么?

javascript - 如何修改内联函数参数?

php - 内容管理系统 : How to handle internal URLs best?

javascript - 如何从 HTML 调用 .sjs 文件?

javascript - 如何使用 authToken 在 angularjs 中实现记住我?

javascript - jQuery DataTables : display rows in the original data source order, 同时保持排序功能可用

jquery - 插件不响应操作 :hover

javascript - 解密 .replace() 参数的内容

python - 从 txt 文件中删除一些词替换一些其他词