用jQuery删除文本

Dom*_*Dom 24 jquery

有没有办法使用jQuery删除未包含在任何标记中的文本

<p>This is some text</p>

This is "unwrapped" text //to be removed

<span>some more text</span>
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Gre*_*reg 47

使用这个问题的答案:

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

  • 是的,`Node`构造函数不是强制在`window`级别可见,而'TEXT_NODE`通常只能在原型上找到,而不是构造函数.'正确'的方式是`this.nodeType == this.TEXT_NODE`,但即使这仍然不能用于IE,所以通常你必须定义自己的`var TEXT_NODE = 3;`. (2认同)

Kob*_*obi 8

首先,您可以使用虚拟跨度包装它们:

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

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

$('span.orphan').remove();
Run Code Online (Sandbox Code Playgroud)