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