Подтвердить что ты не робот

Используйте jquery для удаления div без детей.

Как я могу использовать jquery для удаления дочернего элемента SPECIFIC, у которого нет детей (по крайней мере, нет детей, которые не являются пробелами). Например.

<div id="outer">
    some content
    <div id="removeme"> 


    </div>
    some more content
</div>

Хотите полностью удалить div с id = "removeeme".

4b9b3361

Ответ 1

Чтобы удалить элемент с id равным removeme:

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

Чтобы удалить элемент с id равным removeme, только если он пуст:

$("#removeme:empty").remove();

Чтобы удалить все пустые <div> s:

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

EDIT: Если он не пуст, но имеет пробел:

if($.trim($("#removeme").text()) == "") {
  $("#removeme").remove();
}

Ответ 2

Я пошел с:

$('#outer > div').filter(function (index) { 
    return $(this).children().length < 1; 
}).remove();

Это говорит:

  • дайте мне всех детей div #outer
  • использовать фильтр, чтобы избавиться от всех, у которых есть дочерние узлы.
  • удалить все, что мы еще выбрали

К сожалению, это приведет к удалению div, если он содержит текст, что, вероятно, не то, что хотел бы оригинальный плакат. Обычный текст не считается дочерним.

Ответ 4

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

$("#header").each(function() { 
    if($(this).children().length < 1) 
        $(this).remove() 
});

Ответ 5

Я думаю, вы этого хотите:

$('div#outer div:empty').remove();

Он удалит все пустые div внутри div # external node

Ответ 6

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

так нравится; если li пуст, он удаляет #removeme

if (!$("#tabs ul li").length) $('#tabs').remove();