310 votes

Comment faire pour itérer parmi les éléments enfants d'un div en utilisant jQuery ?

J'ai un div et il contient plusieurs éléments d'entrée... Je voudrais itérer à travers chacun de ces éléments. Des idées ?

554voto

Andy E Points 132925

Utilice children() y each() vous pouvez éventuellement passer un sélecteur à children

$('#mydiv').children('input').each(function () {
    alert(this.value); // "this" is the current element in the loop
});

Vous pouvez aussi simplement utiliser le sélecteur d'enfant immédiat :

$('#mydiv > input').each(function () { /* ... */ });

77 votes

Puis utiliser $(this) dans la fermeture pour accéder à l'élément "actuel" dans la boucle.

1 votes

@amarsuperstar : j'étais justement en train d'ajouter cette information :-)

0 votes

Existe-t-il un moyen de connaître la valeur de "n", en supposant que $(this) est le "n "ième enfant du parent ?

66voto

Liquinaut Points 203

Il est également possible d'itérer à travers tous les éléments dans un contexte spécifique, quelle que soit la profondeur de leur imbrication :

$('input', $('#mydiv')).each(function () {
    console.log($(this)); //log every element found to console output
});

Le deuxième paramètre $('#mydiv') qui est transmis au sélecteur jQuery 'input' est le contexte. Dans ce cas, la clause each() parcourra tous les éléments d'entrée dans le conteneur #mydiv, même s'ils ne sont pas des enfants directs de #mydiv.

1 votes

Probablement à cause de l'imbrication, cette solution a fonctionné pour moi alors que l'autre n'a pas fonctionné. Pour cette raison, je pense que c'est normalement la meilleure solution.

0 votes

C'est ce que je cherchais. Y a-t-il un moyen de faire du json à partir de leurs valeurs ? J'ai besoin de poster tous les thèmes en json.

0 votes

Fonctionne très bien ! Mais que faire si j'ai besoin de tous les éléments à saisir ET à sélectionner ?

16voto

tomloprod Points 4004

Si vous devez parcourir les éléments enfants en boucle récursivement :

function recursiveEach($element){
    $element.children().each(function () {
        var $currentElement = $(this);
        // Show element
        console.info($currentElement);
        // Show events handlers of current element
        console.info($currentElement.data('events'));
        // Loop her children
        recursiveEach($currentElement);
    });
}

// Parent div
recursiveEach($("#div"));   

NOTE : Dans cet exemple, je montre les gestionnaires d'événements enregistrés avec un objet.

13voto

Surya Swanoff Points 447
$('#myDiv').children().each( (index, element) => {
    console.log(index);     // children's index
    console.log(element);   // children's element
 });

Ceci itère à travers tous les enfants et leur élément avec une valeur d'index peut être accédé séparément en utilisant élément y indice respectivement.

9voto

Umar Asghar Points 982

On peut aussi le faire de cette façon :

$('input', '#div').each(function () {
    console.log($(this)); //log every element found to console output
});

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