Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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仅替换div中的文本_Javascript_Jquery - Fatal编程技术网

Javascript 使用jquery仅替换div中的文本

Javascript 使用jquery仅替换div中的文本,javascript,jquery,Javascript,Jquery,我有一个部门,比如: <div id="one"> <div class="first"></div> "Hi I am text" <div class="second"></div> <div class="third"></div> </div> 我正在尝试使用jquery仅将文本从Hi I am text更改为Hi I am repla

我有一个部门,比如:

<div id="one">
       <div class="first"></div>
       "Hi I am text"
       <div class="second"></div>
       <div class="third"></div>
</div>
我正在尝试使用jquery仅将文本从Hi I am text更改为Hi I am replace。 这可能很容易,但我做不到


使用$'one'。文本只会清空整个一个div。

文本不应该单独存在。将其放入一个跨度元素中

将其更改为:

嗨,我是文本 $'one span'。文本'Hi I am replace';
您需要将文本设置为空字符串以外的内容。此外,.html函数应该在保留div的html结构的同时完成这项工作

$('#one').html($('#one').html().replace('text','replace'));
查找文本节点nodeType==3并替换文本内容:

请注意,根据,您可以将上面硬编码的3替换为Node.TEXT_Node,这更清楚地说明了您在做什么

$'one'.contents.filterfunction{ 返回this.nodeType==Node.TEXT\u Node; }.每个功能{ this.textContent=this.textContent.replace'Hi I am text','Hi I am replace'; }; 嗨,我是文本
如果您确实知道要替换的文本,您可以使用

$('#one').contents(':contains("Hi I am text")')[0].nodeValue = '"Hi I am replace"';

$'one'.contents':not*'在本例中选择非元素子节点文本节点,第二个节点是我们要替换的节点


另一种方法是保留该元素,更改文本,然后追加该元素

const star_icon = $(li).find('.stars svg')
$(li).find('.stars').text(repo.stargazers_count).append(star_icon)

以防您无法更改HTML。非常原始但很短&很管用。它将清空父div,因此子div将被删除

$'one'。文本“嗨,我在替换”; 嗨,我是文本
使用$'one'.find'.first'.text'Hi I am replace'可能会有帮助;而不是$'one'。文本;或者您可以直接访问元素并使用$'.first.替换文本。文本'Hi I am replace';从jQuery 1.8.3$'one'。contents':not*'将不选择任何内容。这并没有回答OP的问题,谁没有说他们可以控制HTML。这是可行的,但如何确保执行或不执行?如果空白或标记更改,是否可以运行异常?由于此div是由code.from REST或database创建的,因此绑定失败。这应该是可接受的答案,因为这不需要您更改html@Jamiec FWIW我喜欢这个答案,因为它允许替换,而不用担心损坏标记/脚本等。这对我来说非常有效。有时,我们在不允许更改HTML ie SharePoint的情况下工作。谢谢为什么不用Node.TEXT\u Node替换3以使代码片段更清晰?@Paul谢谢,它更清晰,所以我将它作为一个注释包含在这个旧答案中。虽然在这种情况下可以这样做,我不喜欢这个选项,因为如果你用单词second替换单词first,或者用单词second替换单词'I',它会弄乱你的标记。这会删除所有的子divone@ScotNery谢谢,我已经更新了答案。虽然它在技术上回答了这个特殊的问题,但我认为除了用带有id的标记包装文本之外,它还是相当具有挑战性的。唯一的另一件事是匹配一个字符串来替换,但它真的很脆弱。
$('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"';
const star_icon = $(li).find('.stars svg')
$(li).find('.stars').text(repo.stargazers_count).append(star_icon)