如何替换div中的文本而不会丢失其下的其他格式

时间:2014-06-10 20:36:12

标签: jquery html

我需要将以下文本“遇到错误”更改为“Veuillezvérifierl'信息suivante:”我没有能够在不丢失其他文本格式的情况下执行此操作。

“遇到的错误”下面的无序列表中的项目不是常数,它会根据用户遗漏的内容而改变

<div style="" class="BBFormValidatorSummary" id="PC17178_formWizard_formWizard_ctl08">
Error(s) encountered:
<ul>
<li>Email: Required</li>
<li>Email: Required</li>
<li>Cardholder's Name: Required</li>
<li>Credit Card Number: Required</li>
<li>Credit Card Type:
</ul>
</div>

这是我尝试的但它删除了格式:

$('#PC17178_formWizard_formWizard_ctl08').each(function() {
var text = $(this).text();
$(this).text(text.replace('Error(s) encountered:', 'Veuillez vérifier l’information suivante:')); 
});

这是小提琴:http://jsfiddle.net/jelane20/y3Ej4/

4 个答案:

答案 0 :(得分:1)

使用.html()代替.text()

演示:http://jsfiddle.net/y3Ej4/2/

答案 1 :(得分:1)

只需使用.html instead即可。

或者,您可以尝试find the first text node并直接修改它。这比修改整个HTML块更安全,因为我们可以确定我们不会替换意外的东西。

答案 2 :(得分:1)

问题是您正在使用.text(),它会从字符串中删除HTML元素。相反,如果您使用.html(),它会保持HTML元素的完整性:

$('#PC17178_formWizard_formWizard_ctl08').each(function() {
    var text = $(this).html();
    $(this).html(text.replace('Error(s) encountered:', 'Veuillez vérifier l’information suivante:')); 
});

改进小提琴: Fiddle

答案 3 :(得分:1)

在文本周围放置一个范围,以便您可以自行选择它。

<div style="" class="BBFormValidatorSummary" id="PC17178_formWizard_formWizard_ctl08">
<span class="error_prefix">Error(s) encountered:<span>
<ul>
<li>Email: Required</li>
<li>Email: Required</li>
<li>Cardholder's Name: Required</li>
<li>Credit Card Number: Required</li>
<li>Credit Card Type:
</ul>
</div>

然后你可以这样做:

$("#PC17178_formWizard_formWizard_ctl08 .error_prefix").text('Veuillez vérifier l’information suivante:');