使用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的操作比这种方法快得多!