4

所以这里是代码:

<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

4 回答 4

7

尝试这个:

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

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

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

如果你这样做,你会丢失event listeners元素中的任何数据。

于 2011-04-15T17:20:30.683 回答
0

您可以使用老式的 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 );
}
于 2011-04-15T17:35:44.737 回答
0

我修改了尼尔斯的答案,使其适用于多个元素:

$( elements ).each(function() {  
var child = $(this).children();  
$(this).html(child);   
});
于 2013-02-21T20:45:23.447 回答
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/

于 2018-04-17T16:26:30.297 回答