使用jQuery删除文本

有没有一种方法可以删除不包含任何标签使用jQuery的文本

<p>This is some text</p> This is "unwrapped" text //to be removed <span>some more text</span> 

感谢您的帮助

使用这个问题的答案:

 $(elem) .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove(); 

首先,你可以用虚拟的跨度来包装它们:

 $("body").contents() .filter(function(){ return this.nodeType != 1; }) .wrap("<span class='orphan'/>"); 

现在,您可以轻松删除它们:

 $('span.orphan').remove(); 

FWIW ..

 <div class="parent-element"> <p>This is some text</p> This is "unwrapped" text //to be removed <span>some more text</span> </div> 

通过CSS:

 .parent-element { font-size: 0px; } .parent-element p { font-size: 12px; } .parent-element span { font-size: 14px; } 

将它包装在DOM元素中意味着jQuery可以find它:

例如:

 var text = 'This is "unwrapped" text'; $("div:contains('" + text + "')").remove(); 

要不就:

 $('p').next().remove(); 

这是惊人的,但在同一时间下面的代码不起作用

 $("div.myClass:has(img)").contents().filter(":text").remove(); 

和第一篇文章的代码工作

 $("div.myClass:has(img)") .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove(); 

记住这一点很重要! jQuery 1.8.3。

首先我记得innerHTML的操作比这种方法快得多!