2016-10-04 58 views
1

我試圖替換DIV中的所有文本,其中包括兒童內部,而不更改任何html標籤。在我的例子中,我想通過'Hi'來更改所有'Hello'。非常感謝。替換DIV中除html標籤外的每個文本正則表達式

var changes = $('div').html().replace('Hello','Hi'); 
 

 
$('div').html(changes);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <p class="hello">Hello World</p> 
 
    Hello World<br> 
 
    <span class="world">Hello World</span> 
 
</div>

+0

@Andreas不知道如果這是真的這樣的欺騙。 ':)' –

+0

嘿@布魯諾,你想重新打開這個問題嗎? –

+0

您是否找到解決方案?我的解決方案工作嗎? –

回答

4

replace用字符串參數不能夠代替不止一次。您需要使用RegEx和g(全局)標誌來替換全部。

var changes = $('div').html().replace(/Hello/g,'Hi'); 
 
$('div').html(changes);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <p class="hello">Hello World</p> 
 
    Hello World<br> 
 
    <span class="world">Hello World</span> 
 
</div>

+1

我還會在正則表達式中加'i'('/ Hello/gi'),所以它不區分大小寫 - 如果這符合你的需求 –

+0

同意@Jamesonthedog ...如果它需要區分大小寫。 –

+0

好的,非常感謝,我的問題是使用.text()而不是.html() –