Удалить элементы только с пробелом, используя jQuery - PullRequest
20 голосов
/ 05 октября 2009

Есть ли способ удалить это

<p> </p>

с использованием jQuery?

Ответы [ 8 ]

46 голосов
/ 05 октября 2009

Попробуйте:

$('p')
    .filter(function() {
        return $.trim($(this).text()) === '' && $(this).children().length == 0
    })
    .remove()

Что он делает, так это находит все <p>, в которых ничего нет, и удаляет их из DOM.

15 голосов
/ 30 июня 2010

Как упоминал Greg выше, тестирование урезанного .text () удалит абзацы без текста, но имеет отдельный элемент, такой как тег <img>. Чтобы избежать, обрежьте .html () return. Поскольку текст считается дочерним элементом в DOM, вы будете установлены.

$("p").filter( function() {
    return $.trim($(this).html()) == '';
}).remove()
2 голосов
/ 03 марта 2012

Это может быть лучшим решением для CMS. Некоторые редакторы форматированного текста добавляют &nbsp; в пустые абзацы.

    $("p").filter( function() {

        var html = $(this).html();

        if(html == '' || html == '&nbsp;')
            return true;

    }).addClass('emptyP');
2 голосов
/ 05 октября 2009

Вероятно, тот же ответ, что и здесь , попробуйте сделать это с кодом.

С jquery я буду использовать это:

$("p:empty").remove();

Также вы можете использовать .empty (), который удалит все дочерние узлы из набора соответствующих элементов.

1 голос
/ 15 мая 2012
$("p").filter( function() {
            return $.trim($(this).html()) == '';
        }).remove()

Я использовал это для удаления пустого абзаца, который не содержит таких элементов, как IMG, Input, Select и т. Д.

0 голосов
/ 03 февраля 2013

Если вы пытаетесь просто удалить все пустые элементы P или элементы P только с одним пробелом, то вы можете сделать это:

$('p').map( function(){
  var html = $(this).html();
  if( !html.length || html == ' ' || html == String.fromCharCode(255) )
    return this;
}).remove();

Это повторяет все буквы P на вашей странице и, если они соответствуют определенным критериям (они пусты или имеют только пробел), то удаляет их из DOM.

Кроме того, присвоение нашего HTML-содержимого один раз локальной переменной помогает скрипту работать быстрее. Чтобы найти неразрывные пробелы, я просто сравниваю содержимое со строкой, созданной из кода символа ASCII 255 (который является неразрывным пробелом).

Функция map () jQuery может быть полезна, когда простого фильтра или сравнения атрибутов будет недостаточно.

Подробнее об этом можно прочитать здесь .... http://api.jquery.com/map/

0 голосов
/ 25 сентября 2011

Это должно обрабатывать любой элемент с без дочерних элементов любого типа (включая развернутые текстовые узлы).

$("p").filter(function() { 
  return !this.childNodes[0]
}).remove();
0 голосов
/ 05 октября 2009

дайте ему идентификатор (чтобы получить селектор).

<p id="myP"></p>


<script>

$("#myP").remove();

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...