228 votes

Comment effacer le contenu de toutes les <div>s à l'intérieur d'une <div>parent ?

J'ai un div <div id="masterdiv"> qui a plusieurs enfants <div> s.

Exemple :

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

Comment effacer le contenu de tous les enfants <div> à l'intérieur du maître <div> en utilisant jQuery ?

7 votes

J'ai ré-étiqueté votre question parce qu'elle n'est pas liée à Asp.net MVC (comme vous l'avez étiquetée) d'une manière ou d'une autre.

0 votes

Envisagez d'accepter une réponse qui utilise .empty() . C'est la manière la plus performante de le faire.

468voto

Emil Ivanov Points 18594

La méthode de jQuery empty() fait exactement cela :

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

efface le maître div .

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

efface tous les enfants div mais laisse le maître intact.

8 votes

api.jquery.com/empty c'est vrai mais je ne sais pas pourquoi la réponse de Quentin a été acceptée :)

5 votes

Cela permet de dégager plus que ce qui était demandé dans la question originale -- vous devriez utiliser une méthode de nettoyage plus efficace. sélecteur spécifique .

4 votes

Wow, merci Drew d'avoir signalé ce problème 1,5 ans plus tard :) Corrigé.

280voto

Quentin Points 325526
jQuery('#masterdiv div').html('');

0 votes

Peut-on cloner le html et le manipuler ? comme var tmp = $('<div>').append($('#masterdiv').clone()).remove().html() ; et récupérer les divs à l'intérieur de #masterdiv de tmp et effacer le contenu et retourner

119 votes

Utilisation de .empty() serait une meilleure option car il n'y a pas d'analyse syntaxique des chaînes de caractères. Il opère directement sur le modèle d'objet DOM.

7 votes

empty() efface également tout le contenu qui est généré avec jQuery.

23voto

Drew Noakes Points 69288

Utilisez la syntaxe du sélecteur CSS de jQuery pour sélectionner tous les éléments suivants div à l'intérieur de l'élément avec l'id masterdiv . Puis appelez empty() pour effacer le contenu.

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

Utilisation de text('') ou html('') entraînera l'analyse de chaînes de caractères, ce qui est généralement une mauvaise idée lorsque l'on travaille avec le DOM. Essayez d'utiliser des méthodes de manipulation du DOM qui n'impliquent pas de représentations de chaînes d'objets du DOM lorsque cela est possible.

12voto

Ikke Points 31517

Si toutes les divs à l'intérieur de cette masterdiv doivent être effacées, il faut le faire.

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

sinon, vous devez itérer sur tous les div enfants de #masterdiv, et vérifier si l'id commence par childdiv.

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

11voto

Joe Mike Points 244

Le meilleur moyen est :

 $( ".masterdiv" ).empty();

1 votes

Cela sélectionne tous les éléments ayant la classe "masterdiv", et non l'id "masterdiv", comme indiqué dans les questions - juste une remarque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X