用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"';
要么
$('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"';
$('#one').contents(':not(*)')
在这种情况下select非元素子节点,第二个节点是我们要replace的节点。
另一种方法是保留这个元素,改变文本,然后追加这个元素
const star_icon = $(li).find('.stars svg') $(li).find('.stars').text(repo.stargazers_count).append(star_icon)