所以这是代码:
<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>
我看到很多人都在询问如何删除子元素并保留未包装的文本,但不是相反。你如何针对未命名的东西?
答案 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/