jQuery如何替换html页面中出现的所有字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (418)

我正在处理一个项目,我需要用另一个字符串替换所有出现的字符串。但是,我只想替换字符串,如果它是文本。例如,我想打开这个...

<div id="container">
  <h1>Hi</h1>
  <h2 class="Hi">Test</h2>
  Hi
</div>

成...

<div id="container">
  <h1>Hello</h1>
  <h2 class="Hi">Test</h2>
  Hello
</div>

在这个例子中,所有的“Hi”都变成了“Hello”,除了“Hi”作为h2类。

$("#container").html( $("#container").html().replace( /Hi/g, "Hello" ) )

...但是,也取代了所有的“Hi”在html中的出现

提问于
用户回答回答于

这个:

$("#container").contents().each(function () {
    if (this.nodeType === 3) this.nodeValue = $.trim($(this).text()).replace(/Hi/g, "Hello")
    if (this.nodeType === 1) $(this).html( $(this).html().replace(/Hi/g, "Hello") )
})

产生这个:

<div id="container">
    <h1>Hello</h1>
    <h2 class="Hi">Test</h2>
    Hello
</div>

例子

用户回答回答于

很好的结果:

function str_replace_all(string, str_find, str_replace){
try{
    return string.replace( new RegExp(str_find, "gi"), str_replace ) ;      
} catch(ex){return string;}}

和更容易记住...

扫码关注云+社区

领取腾讯云代金券