2016-10-04 2 views
1

Я пытаюсь заменить весь текст в DIV, включая внутри детей без изменения каких-либо html-тегов. В моем примере я хотел бы изменить все «Hello» на «Привет». Большое спасибо.Заменить все тексты, кроме тега html внутри DIV Regex

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() –

Смежные вопросы