Как очистить все содержимое <div> внутри родительского <div>?

219

У меня есть div, у <div id="masterdiv">которого есть несколько дочерних <div>элементов.

Пример:

<div id="masterdiv">
  <div id="childdiv1" />
  <div id="childdiv2" />
  <div id="childdiv3" />
</div>

Как очистить содержимое всех дочерних элементов <div>внутри мастера, <div>используя jQuery?

Прасад
источник
6
Я пометил ваш вопрос, потому что он никак не связан с Asp.net MVC (как вы его пометили).
Роберт Коритник
Попробуйте принять ответ, который использует .empty(). Это самый эффективный способ сделать это
Каньон Колоб

Ответы:

270
jQuery('#masterdiv div').html('');
Quentin
источник
Можем ли мы клонировать HTML и манипулировать этим? например, var tmp = $ ('<div>'). append ($ ('# masterdiv'). clone ()). remove (). html (); и получить div внутри #masterdiv из tmp, очистить содержимое и вернуться
Прасад
118
Использование .empty()было бы лучшим вариантом, так как никакой разбор строк не используется. Он работает напрямую с объектной моделью DOM.
Дрю Ноакс
7
empty()также очищает весь контент, сгенерированный с помощью jQuery.
MikkoP
445

empty()Функция jQuery делает именно это:

$('#masterdiv').empty();

очищает мастер div.

$('#masterdiv div').empty();

очищает все дочерние divэлементы, но оставляет мастера нетронутым.

Эмиль Иванов
источник
8
api.jquery.com/empty это правда, но я не знаю, почему Квентин принял ответ :)
Nuri YILMAZ
5
Это очищает больше, чем требовалось в исходном вопросе - вы должны использовать более конкретный селектор .
Дрю Ноакс
4
Вау, спасибо тебе, Дрю, за то, что указал на это 1,5 года спустя :) Исправлено.
Эмиль Иванов
20

Используйте синтаксис селектора CSS jQuery, чтобы выбрать все divэлементы внутри элемента с идентификатором masterdiv. Затем позвоните, empty()чтобы очистить содержимое.

$('#masterdiv div').empty();

Использование text('')или html('')вызовет некоторый синтаксический анализ строк, что обычно является плохой идеей при работе с DOM. Попробуйте и по возможности используйте методы манипулирования DOM, которые не включают строковые представления объектов DOM.

Дрю Ноакс
источник
14

jQuery рекомендует использовать ".empty ()", ". remove ()", ". detach ()"

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

$('#target_id').empty();

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

$('#target_id').remove();

я и группа jQuery не рекомендуем использовать SET FUNCTION, например .html () .attr () .text (), что это? это если вы хотите установить все, что вам нужно

ссылка: https://learn.jquery.com/using-jquery-core/manipulation-elements/

Абдул Азиз Аль Басыр
источник
12

Если все div внутри этого masterdiv нужно очистить, то это так.

$('#masterdiv div').html('');

в противном случае вам нужно выполнить итерации для всех дочерних элементов div в #masterdiv и проверить, начинается ли идентификатор с childdiv.

$('#masterdiv div').each(
    function(element){
        if(element.attr('id').substr(0, 8) == "childdiv")
        {
            element.html('');
        }
    }
 );
Ikke
источник
11

Лучший способ это:

 $( ".masterdiv" ).empty();
Джо Майк
источник
1
При этом выбираются все элементы с классом «masterdiv», а не с id «masterdiv», в соответствии с вопросами - просто примечание.
Дейв
6
$("#masterdiv > *").text("")

или

$("#masterdiv").children().text("")
adamse
источник
6
$('#div_id').empty();

или

$('.div_class').empty();

Работает нормально, чтобы удалить содержимое внутри div

Раки
источник
3
Дубликат ответа Эмиля Иванова.
Адриан Энрикес
6

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

 $(document).ready(function () {
  $("#button").click(function () {
   //only the content inside of the element will be deleted
   $("#masterdiv").empty();
  });
 });

Чтобы увидеть сравнение между jquery .empty (), .hide (), .remove () и .detach (), следуйте здесь http://www.voidtricks.com/jquery-empty-hide-remove-detach/

Ананд Рошан
источник
5

Когда вы добавляете данные в div по id, используя любую службу или базу данных, сначала попробуйте пусто, например:

var json = jsonParse(data.d);
$('#divname').empty();
Sheeraz
источник
4
$("#masterdiv div[id^='childdiv']").each(function(el){$(el).empty();});

или

$("#masterdiv").find("div[id^='childdiv']").each(function(el){$(el).empty();});
Андрес Дескальзо
источник
3

Я знаю, что это jQueryсвязанный вопрос, но я верю, что кто-то может прийти сюда в ожидании чистого Javascriptрешения. Итак, если вы пытаетесь сделать это с помощью js, вы можете использовать innerHTMLсвойство и установить его в пустую строку.

document.getElementById('masterdiv').innerHTML = '';
Ален Круз
источник
1
это был лучший результат в Google при поиске, как очистить div. Спасибо!
Прид
0

попробуйте их, если это поможет.

$('.div_parent .div_child').empty();

$('#div_parent #div_child').empty();

Гаурав Каушик
источник
почему "-1". Я только пытался помочь?
Гаурав Каушик