是否可以从div中删除文本内容,即保留所有其他元素不变,只删除直接位于div中的文本?
答案 0 :(得分:73)
这应该可以解决问题:
$('#YourDivId').contents().filter(function(){
return this.nodeType === 3;
}).remove();
或使用ES6箭头功能:
$('#YourDivId').contents().filter((_, el) => el.nodeType === 3).remove();
如果您想让您的代码更具可读性,而您只需要支持IE9 +,则可以使用node type constants。就个人而言,我还将过滤功能拆分并命名,以便重复使用,甚至更好的可读性:
let isTextNode = (_, el) => el.nodeType === Node.TEXT_NODE;
$('#YourDivId').contents().filter(isTextNode).remove();
这是一个包含所有示例的片段:
$('#container1').contents().filter(function() {
return this.nodeType === Node.TEXT_NODE;
}).remove();
$('#container2').contents().filter((_, el) => el.nodeType === Node.TEXT_NODE).remove();
let isTextNode = (_, el) => el.nodeType === Node.TEXT_NODE;
$('#container3').contents().filter(isTextNode).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container1">
<h1>This shouldn't be removed.</h1>
This text should be removed.
<p>This shouldn't be removed either.</p>
This text should also be removed.
</div>
<div id="container2">
<h1>This shouldn't be removed.</h1>
This text should be removed.
<p>This shouldn't be removed either.</p>
This text should also be removed.
</div>
<div id="container3">
<h1>This shouldn't be removed.</h1>
This text should be removed.
<p>This shouldn't be removed either.</p>
This text should also be removed.
</div>
答案 1 :(得分:11)
假设以下HTML结构:
<div class="element-to-clean">
Content to be filtered out.
<span class="element-to-leave-intact">
Content to be left inthe element.
</span>
</div>
您可以使用以下JavaScript + jQuery 2.1代码实现所需的行为:
$('.element-to-clean').html($('.element-to-clean').children());
答案 2 :(得分:3)
你可以用简单的dom:
来做var div=$("div")[0];
if(div.childNodes.length)
for(var i=0;i<div.childNodes.length;i++)
{
if(div.childNodes[i].nodeType===3)
div.removeChild(div.childNodes[i]);
}
答案 3 :(得分:2)
最简单的方法是:
$('#div').html($('<div>').append($('*', '#div')).html());
答案 4 :(得分:2)
嗯这可能不是最好的方法,但我在一个变量中保存了div然后在我删除了标签中的所有内容后我使用了追加:
$('.wpcf7 form p').each(function(i){
var el = $(this).find('span');
if(i==4)
el = $(this).find('input');
$(this).empty();
$(this).append(el);
});
答案 5 :(得分:-6)
$('#yourDiv').text('');
这将删除您的文字内容