Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不更改布局的情况下替换文本的解决方案(jQuery)_Javascript_Jquery - Fatal编程技术网

Javascript 在不更改布局的情况下替换文本的解决方案(jQuery)

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

如何在不更改周围标记的情况下替换文本。 $(“内容”).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%; 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的建议来做。如果没有,你就被卡住了。