JQuery - Удалите только текстовое содержание из отделения

возможно удалить только текстовое содержание из отделения, т.е. оставить все другие элементы неповрежденными и только удалить текст, который является непосредственно в отделении?

42
задан David 6 August 2010 в 08:11
поделиться

3 ответа

Вы можете сделать это с помощью простого 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]);
   }
3
ответ дан 26 November 2019 в 23:39
поделиться

Это должно помочь:

$('#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 (); 
  

Не следует удалять.

Этот текст следует удалить.

Его тоже не следует удалять.

Этот текст также следует удалить.

Не следует удалять.

Этот текст следует удалить.

Его тоже не следует удалять.

Этот текст также следует удалить.

Не следует удалять.

Этот текст следует удалить.

Его тоже не следует удалять.

Этот текст также следует удалить.
74
ответ дан 26 November 2019 в 23:39
поделиться

Самый простой способ будет выглядеть примерно так:

$('#div').html($('<div>').append($('*', '#div')).html());
2
ответ дан 26 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: