Есть ли способ удалить этот
<p> </p>
с помощью jQuery?
Есть ли способ удалить этот
<p> </p>
с помощью jQuery?
Try:
$('p')
.filter(function() {
return $.trim($(this).text()) === '' && $(this).children().length == 0
})
.remove()
Что это значит, он находит все <p>
, которые ничего не имеют в них, и удаляет их из DOM.
Как упоминает Грег выше, тестирование обрезанного .text() будет удалять абзацы без текста, но иметь автономный элемент, например тег <img>
. Чтобы избежать обрезки .html() return. Поскольку текст считается дочерним элементом в DOM, вы будете установлены.
$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
Вероятно, такой же ответ, как здесь, попробуйте сделать это по коду.
С jquery я буду использовать это:
$("p:empty").remove();
Также вы можете использовать .empty(), который удалит все дочерние узлы из набора согласованных элементов.
Это может быть лучшим решением для CMS. Некоторые текстовые редакторы добавляют
внутри пустых абзацев.
$("p").filter( function() {
var html = $(this).html();
if(html == '' || html == ' ')
return true;
}).addClass('emptyP');
$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
Я использовал это для удаления пустого абзаца, который содержит не такой элемент, как IMG, Input, Select и т.д.
Если вы пытаетесь просто удалить все пустые элементы P или P только с одним пространством, вы можете сделать это:
$('p').map( function(){
var html = $(this).html();
if( !html.length || html == ' ' || html == String.fromCharCode(255) )
return this;
}).remove();
Это повторяется через все P на вашей странице, и если они соответствуют определенным критериям (они пусты или имеют только пробел), то он удаляет их из DOM.
Кроме того, назначая наш html-контент один раз локальной переменной, он помогает script работать быстрее. Чтобы искать неразрывные пробелы, я просто сравниваю содержимое с строкой, созданной из символьного кода ASCII 255 (который является неразрывным пространством).
Функция jQuery map() может быть отличной, если недостаточно простого фильтра или сравнения атрибутов.
Подробнее об этом вы можете прочитать здесь. http://api.jquery.com/map/
Это должно обрабатывать любой элемент с без детей любого типа (включая развернутые текстовые узлы).
$("p").filter(function() {
return !this.childNodes[0]
}).remove();
дайте ему идентификатор (чтобы получить селектор).
<p id="myP"></p>
<script>
$("#myP").remove();
</script>