所以这里是代码:
<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>
我看到很多人问如何删除子元素并保留未包装的文本,但不是相反。你如何定位未命名的东西?
所以这里是代码:
<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>
我看到很多人问如何删除子元素并保留未包装的文本,但不是相反。你如何定位未命名的东西?
尝试这个:
var child = $('parent').children('child');
$('parent').html(child);
小提琴:http: //jsfiddle.net/maniator/t2CDk/
如果你这样做,你会丢失event listeners
元素中的任何数据。
您可以使用老式的 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 );
}
我修改了尼尔斯的答案,使其适用于多个元素:
$( elements ).each(function() {
var child = $(this).children();
$(this).html(child);
});
非常简单,只需使用以下代码:
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/