jQuery-удалить развернутый текст, но сохранить элементы?
Итак, вот код:
<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 ответа:
Попробуйте это:
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/