我有一个像这样的div:
<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').text('')
只会清空整个#One
div。
发布于 2012-08-08 22:56:37
文本不应该是独立的。将其放入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');
发布于 2012-08-08 23:04:35
找到文本节点(nodeType==3
)并替换textContent
$('#one').contents().filter(function() {
return this.nodeType == 3
}).each(function(){
this.textContent = this.textContent.replace('Hi I am text','Hi I am replace');
});
请注意,根据docs,您可以将上面的硬编码3
替换为Node.TEXT_NODE
,这将使您所做的事情更加清晰。
$('#one').contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}).each(function(){
this.textContent = this.textContent.replace('Hi I am text','Hi I am replace');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="one">
<div class="first"></div>
"Hi I am text"
<div class="second"></div>
<div class="third"></div>
</div>
发布于 2012-08-08 22:57:14
您需要将文本设置为空字符串以外的值。此外,.html()函数应该在保留div的超文本标记语言结构的同时执行此操作。
$('#one').html($('#one').html().replace('text','replace'));
https://stackoverflow.com/questions/11867269
复制相似问题