возможно удалить только текстовое содержание из отделения, т.е. оставить все другие элементы неповрежденными и только удалить текст, который является непосредственно в отделении?
Вы можете сделать это с помощью простого dom:
var div=$("div")[0];
if(div.childNodes.length)
for(var i=0;i<div.childNodes.length;i++)
{
if(div.childNodes[i].nodeType===3)
div.removeChild(div.childNodes[i]);
}
Это должно помочь:
$('#YourDivId').contents().filter(function(){
return this.nodeType === 3;
}).remove();
Или используя стрелочную функцию ES6:
$('#YourDivId').contents().filter((_, el) => el.nodeType === 3).remove();
Если вы хотите Чтобы сделать ваш код более читаемым, и вам нужно только поддерживать IE9 +, вы можете использовать константы типа узла . Лично я бы также разделил функцию фильтра и назвал ее для повторного использования и еще большей удобочитаемости:
let isTextNode = (_, el) => el.nodeType === Node.TEXT_NODE;
$('#YourDivId').contents().filter(isTextNode).remove();
Вот фрагмент со всеми примерами:
$ ('# container1'). Contents (). Filter ( function () {вернуть this.nodeType === Node.TEXT_NODE;}). remove (); $ ('# container2'). contents (). filter ((_, el) => el.nodeType === Node.TEXT_NODE) .remove (); let isTextNode = (_, el) => el.nodeType === Node.TEXT_NODE; $ ('# container3'). contents (). filter (isTextNode) .remove ();
Не следует удалять.
Этот текст следует удалить. Его тоже не следует удалять.
Этот текст также следует удалить. Не следует удалять.
Этот текст следует удалить. Его тоже не следует удалять.
Этот текст также следует удалить. Не следует удалять.
Этот текст следует удалить. Его тоже не следует удалять.
Этот текст также следует удалить.
Самый простой способ будет выглядеть примерно так:
$('#div').html($('<div>').append($('*', '#div')).html());