Jquery 如何删除DIV中除一个元素之外的所有内容?
我有以下HTML:Jquery 如何删除DIV中除一个元素之外的所有内容?,jquery,Jquery,我有以下HTML: <div class="item"> <img src="http://mintywhite.com/images/wg/0904/05rssfeedicons/rss-feed-icons11.jpg"/> TEXT NODE <span class="some_class">What the funk?</span> <form>What the monkey</form&g
<div class="item">
<img src="http://mintywhite.com/images/wg/0904/05rssfeedicons/rss-feed-icons11.jpg"/>
TEXT NODE
<span class="some_class">What the funk?</span>
<form>What the monkey</form>
</div>
有什么建议吗
这是我的JSFIDLE,你可以摆弄它:
如果图像上有任何数据或处理程序,我们可以使用
.detach()
如果有多个,则需要使用
.each()
文本节点需要包装在一个html标记中,如span。 我使用您提供的JSFIDLE进行了尝试,没有遇到任何问题。 祝你好运! 汤姆
**文本节点**
什么鬼东西?
什么猴子
尝试以下操作:$('.item').contents(':not(img)).remove()代码>对于jQuery v1.9.1及以下版本,以下各项将起作用:
$('.item').contents(':not("img")').remove();
这将查找所有不是图像的元素(包括文本节点)并删除它们
$(文档).ready(函数(){
$('.item').contents(':not(“img”)).remove();
});代码>
文本节点
什么鬼东西?
什么猴子
文本仍然保留,因为它不是DOM元素。尝试在其周围添加一个
。或者我认为您应该制作类似于$(“.class”).text()=”代码>但不太确定。我不同意,我的解决方案有效。contents方法意味着它不需要span标记。不过,我同意span标签是最好的做法。谢谢你的回答,汤姆。抱歉,我的问题不清楚,但这是问题的一部分-文本节点没有包装在元素中。超级有用且简单+1您可以将其用于2.1.1:$('.item').children(':not(img')).remove();虽然你的答案确实删除了文本元素,而我上面的评论也没有。
var itm = $('.item');
var img = itm.children('img');
itm.empty().append(img);
var itm = $('.item');
var img = itm.children('img').detach();
itm.empty().append(img);
$('.item').each(function() {
var img = $(this).children('img').detach();
$(this).empty().append(img);
});
<div class="item">
<img src="http://mintywhite.com/images/wg/0904/05rssfeedicons/rss-feed-icons11.jpg"/>
**<span>TEXT NODE</span>**
<span class="some_class">What the funk?</span>
<form>What the monkey</form>
</div>
$('.item').contents(':not("img")').remove();