¿Cómo borrar todos los contenidos de <div> s dentro de un padre <div>?

219

Tengo un div <div id="masterdiv">que tiene varios hijos <div>s.

Ejemplo:

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

¿Cómo borrar el contenido de todos los niños <div>dentro del maestro <div>usando jQuery?

Prasad
fuente
66
Volví a etiquetar tu pregunta porque no está relacionada con Asp.net MVC (como la has etiquetado) de ninguna manera o forma.
Robert Koritnik el
Considere aceptar una respuesta que use .empty(). Es la forma más eficaz de hacerlo
Kolob Canyon

Respuestas:

270
jQuery('#masterdiv div').html('');
Quentin
fuente
¿Podemos clonar el html y manipularlo? como var tmp = $ ('<div>') .append ($ ('# masterdiv'). clone ()). remove (). html (); y obtener los divs dentro de #masterdiv de tmp y borrar el contenido y volver
Prasad
118
Usar .empty()sería una mejor opción, ya que no se incluye el análisis de cadenas. Funciona directamente en el modelo de objetos DOM.
Drew Noakes
77
empty()También borra todo el contenido que se genera con jQuery.
MikkoP
445

La empty()función de jQuery hace justamente eso:

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

despeja al maestro div.

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

borra todo el niño div, pero deja al maestro intacto.

Emil Ivanov
fuente
8
api.jquery.com/empty es cierto pero no sé por qué la respuesta de Quentin aceptó :)
Nuri YILMAZ
55
Esto borra más de lo que se solicitó en la pregunta original: debe usar un selector más específico .
Drew Noakes
44
Wow, gracias Drew por señalar esto 1.5 años después :) Solucionado.
Emil Ivanov
20

Use la sintaxis del selector CSS de jQuery para seleccionar todos los divelementos dentro del elemento con id masterdiv. Luego llame empty()para borrar los contenidos.

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

Usar text('')o html('')provocará un análisis de cadenas, lo que generalmente es una mala idea cuando se trabaja con DOM. Intente y utilice métodos de manipulación DOM que no impliquen representaciones en cadena de objetos DOM siempre que sea posible.

Drew Noakes
fuente
14

jQuery recomienda usar ".empty ()", ". remove ()", ". detach ()"

si necesita eliminar todos los elementos en el elemento, use este código:

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

si necesita eliminar todos los elementos, use este código:

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

i y jQuery group no recomiendan usar SET FUNCTION como .html () .attr () .text (), ¿qué es eso? es SI DESEA CONFIGURAR ALGO QUE NECESITA

ref: https://learn.jquery.com/using-jquery-core/manipulating-elements/

Abdul Aziz Al Basyir
fuente
12

Si todos los divs dentro de ese masterdiv necesitan ser borrados, esto.

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

de lo contrario, debe iterar en todos los hijos div de #masterdiv y verificar si la identificación comienza con childdiv.

$('#masterdiv div').each(
    function(element){
        if(element.attr('id').substr(0, 8) == "childdiv")
        {
            element.html('');
        }
    }
 );
Ikke
fuente
11

La mejor manera es:

 $( ".masterdiv" ).empty();
Joe Mike
fuente
1
Esto selecciona todos los elementos con la clase "masterdiv", no la identificación "masterdiv", según las preguntas, solo una nota.
Dave
7
$("#masterdiv div").text("");
Brendan
fuente
6
$("#masterdiv > *").text("")

o

$("#masterdiv").children().text("")
adamse
fuente
6
$('#div_id').empty();

o

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

Funciona bien para eliminar contenidos dentro de un div

Raki
fuente
3
Duplicado de la respuesta de Emil Ivanov.
Adrián Enríquez
6

Puede usar la función .empty () para borrar todos los elementos secundarios

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

Para ver la comparación entre jquery .empty (), .hide (), .remove () y .detach (), siga aquí http://www.voidtricks.com/jquery-empty-hide-remove-detach/

Anand Roshan
fuente
5

Cuando agregue datos a div por id utilizando cualquier servicio o base de datos, primero inténtelo vacío, así:

var json = jsonParse(data.d);
$('#divname').empty();
Sheeraz
fuente
4
$("#masterdiv div[id^='childdiv']").each(function(el){$(el).empty();});

o

$("#masterdiv").find("div[id^='childdiv']").each(function(el){$(el).empty();});
andres descalzo
fuente
3

Sé que esta es una jQuerypregunta relacionada, pero creo que alguien podría llegar aquí esperando una Javascriptsolución pura . Entonces, si estaba tratando de hacer esto usando js, podría usar la innerHTMLpropiedad y establecerla en una cadena vacía.

document.getElementById('masterdiv').innerHTML = '';
Alain Cruz
fuente
1
Este fue el mejor resultado en Google al buscar cómo vaciar un div. ¡Gracias!
Prid
0

pruébalos si te ayuda.

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

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

Gaurav Kaushik
fuente
por qué "-1". ¿Solo estaba tratando de ayudar?
Gaurav Kaushik