Javascript 在不更改布局的情况下替换文本的解决方案(jQuery)
如何在不更改周围标记的情况下替换文本。 $(“内容”).text(“一些新文本”)将删除周围的标记Javascript 在不更改布局的情况下替换文本的解决方案(jQuery),javascript,jquery,Javascript,Jquery,如何在不更改周围标记的情况下替换文本。 $(“内容”).text(“一些新文本”)将删除周围的标记 <div id="content" style="height: 100%; width: 100%; padding: px;"> <p><strong>I need to be replaced</strong> </p></div> <div id="content" style="height: 100%; w
<div id="content" style="height: 100%; width: 100%; padding: px;">
<p><strong>I need to be replaced</strong>
</p></div>
<div id="content" style="height: 100%; width: 100%; padding: 5px;">
<p><em><strong>I need to be replaced</strong></em></p>
</div>
我需要更换
我需要更换
如果您知道总是替换强标记中的文本,您可以这样做。否则,您可能必须创建某种业务规则,以确定要替换的内容块中的哪个元素
$("#content strong").text("some new text")
如果您对封闭标记一无所知,除了可能存在结构之外,您可以编写如下内容:
$.each($('.content'), function(i, val) {
console.log($(val));
replaceText(val, 'This is the updated text');
});
function replaceText(element, text) {
if ($(element).children().size() == 0) {
$(element).text(text);
return;
}
replaceText($(element).children()[0], text);
}
这将查找当前对象的子对象,如果有子对象,则向下移动DOM树中的第一个子对象。现在,如果一个元素有多个子元素,而您不知道要替换哪个子元素,那么您必须做更多的工作来创建业务规则
如果您知道要替换的部分或全部文本,也可以在CSS中使用内容选择器:
$('.content').find(':contains("I also need to be replaced")').text('Update text');
感谢您的解决方案,非常有帮助 re:如果您知道要替换的部分或全部文本,也可以在CSS中使用内容选择器:
$('.content').find(':contains("I also need to be replaced")').text('Update text');
这就是关键:)$(“#content”).text()=我们要替换的内容
你的解决方案很有效。
我终于做到了:
var content = $("#content").text();
$("#content").html($("#content").html().replace(content,"new text"));
谢谢 谢谢你的回答,问题是周围标签的布局是未知的,所以我不知道它是强、i、p div还是其他标签。只有文本应该被替换。我希望用javascript或JQuery提供一个简单的解决方案。如果您知道哪些元素可能会出现,您可以按照Brian的建议来做。如果没有,你就被卡住了。