用jqueryreplacediv中的文本

我有一个div像:

<div id="one"> <div class="first"></div> "Hi I am text" <div class="second"></div> <div class="third"></div> </div> 

我试图改变只从“嗨,我是文本”的文本到“嗨我replace”使用jQuery。 这可能很容易,但我无法做到这一点。

使用$('#one').text('')将清空整个#One div。

文本不应该是自己的。 把它放到span元素中。

将其更改为:

 <div id="one"> <div class="first"></div> <span>"Hi I am text"</span> <div class="second"></div> <div class="third"></div> </div> 
 $('#one span').text('Hi I am replace'); 

find文本节点( nodeType==3 )并replacetextContent

 $('#one').contents().filter(function() { return this.nodeType == 3 }).each(function(){ this.textContent = this.textContent.replace('Hi I am text','Hi I am replace'); }); 

现场示例: http : //jsfiddle.net/VgFwS/

您需要将文本设置为空string以外的内容。 另外,.html()函数应该保留div的HTML结构。

 $('#one').html($('#one').html().replace('text','replace')); 

如果你真的知道你将要replace的文本,你可以使用

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

http://jsfiddle.net/5rWwh/

要么

 $('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"'; 

$('#one').contents(':not(*)')在这种情况下select非元素子节点,第二个节点是我们要replace的节点。

http://jsfiddle.net/5rWwh/1/

另一种方法是保留这个元素,改变文本,然后追加这个元素

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