jQuery - 删除未打包的文本但保留元素?

时间:2011-04-15 17:18:52

标签: jquery dom-manipulation

所以这是代码:

<parent><child>i want to keep the child</child>Some text I want to remove</parent>

我想将其更改为:

<parent><child>i want to keep the child</child></parent>

我看到很多人都在询问如何删除子元素并保留未包装的文本,但不是相反。你如何针对未命名的东西?

4 个答案:

答案 0 :(得分:6)

试试这个:

var child = $('parent').children('child');

$('parent').html(child);

小提琴:http://jsfiddle.net/maniator/t2CDk/

如果您这样做,则会丢失元素中的event listeners和数据。

答案 1 :(得分:0)

您可以使用ol'fashioned javascript方式,并测试每个节点的nodeType为3,然后对其执行removeChild。这将非常干净和快速(最小的jQuery),并且不会弄乱任何事件监听器。

var parent = $('parent')[0];  // Get reference to DOM

for( var i = 0; i < parent.childNodes.length; i++ ) {
  var current_child = parent.childNodes[i];
  if( current_child.nodeType == 3 )
    parent.removeChild( current_child );
}

答案 2 :(得分:0)

我修改了Neals的答案,因此适用于多个元素:

$( elements ).each(function() {  
var child = $(this).children();  
$(this).html(child);   
});

答案 3 :(得分:0)

使用此代码非常简单:

jQuery(function($){

    // Replace 'td' with your html tag
    $("td").html(function() { 

    // Replace 'ok' with string you want to change, you can delete 'hello everyone' to remove the text
          return $(this).html().replace("ok", "hello everyone");  

    });
});

以下是完整示例:https://blog.hfarazm.com/remove-unwrapped-text-jquery/