考虑这个文档片段:
我希望将字符串“John”替换为字符串“Peter”。这可以通过HTML重写来实现。
那么,应该如何执行此任务才是适当的呢?
<div id="test">
<h1>An article about John</h1>
<p>The frist paragraph is about John.</p>
<p>The second paragraph contains a <a href="#">link to John's CV</a>.</p>
<div class="comments">
<h2>Comments to John's article</h2>
<ul>
<li>Some user asks John a question.</li>
<li>John responds.</li>
</ul>
</div>
</div>
我希望将字符串“John”替换为字符串“Peter”。这可以通过HTML重写来实现。
$('#test').html(function(i, v) {
return v.replace(/John/g, 'Peter');
});
工作演示:http://jsfiddle.net/v2yp5/
上述jQuery代码看起来简单直观,但实际上这是一个糟糕的解决方案。HTML重写会重新创建#test DIV内的所有DOM节点。随后,在该DOM子树上程序性地进行更改(例如“onEvent”处理程序),或由用户(输入表单字段)进行更改时,这些更改不会被保留。那么,应该如何执行此任务才是适当的呢?
text()
重写会破坏所有子元素。请参见此处。 - Šime Vidastext()
使用了innerText
或textContent
。 - alex