如何多次替换同一字符?

时间:2022-10-24 23:44:09

I need to replace a specific character for all elements whose class is the same with jQuery. Consider this html code:

我需要为所有类与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>

I need to replace all the ® charactesr with superscript tags with this code:

我需要替换所有®charactesr与上标标签这段代码:

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

However, this code will replace the first occurrence only. For the second and beyond occurrences, it'll replace the whole product names with the first product name including the h1 tags.

然而,这段代码将只替换第一次出现。对于第二个或更多的事件,它将用包含h1标记的第一个产品名称替换整个产品名称。

How can I replace just the ® characters without changing the other characters and tags?

我怎么能取代®字符而不改变其他人物和标签?

2 个解决方案

#1


4  

You can use the callback in html() to return the value to each element in the collection

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

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

FIDDLE

小提琴

#2


1  

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

尝试$(' .product-name '). html().split(®). join(“ <一口> < < /一口> ');

For a more complete answer,

为了得到更完整的答案,

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

JS Fiddle

JS小提琴

#1


4  

You can use the callback in html() to return the value to each element in the collection

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

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

FIDDLE

小提琴

#2


1  

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

尝试$(' .product-name '). html().split(®). join(“ <一口> < < /一口> ');

For a more complete answer,

为了得到更完整的答案,

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

JS Fiddle

JS小提琴