2010-10-28 1 views
3

Je travaille sur un script qui va pousser chaque élément enfant dans un tableau global (pour le traitement ultérieur dans mon script) mais pour une raison quelconque, il ne pousse pas réellement l'élément dans le tableau .Pousser des éléments enfants dans un tableau global en utilisant jQuery

code:

var childElements=new Array();  
function getChildren(elem){ 
      $(elem).children().each(function(index, value){ 
       childElements[index] = $(this); 
      }); 
     } 

que je fais quelque chose de mal?

Répondre

3

Puisqu'un objet jQuery est un objet semblable à un tableau, j'utiliserais probablement cela au lieu de créer un tableau d'objets enveloppés individuellement.

var childElements=$(elem).children(); 

Si vous avez l'intention d'ajouter d'autres éléments, vous pouvez toujours .push().add() nouveaux éléments. Cela permettra également de s'assurer que vous n'avez pas de doublons.

var childElements= $();  
function getChildren(elem){ 
    childElements = childElements.add($(elem).children()); 
} 
+0

Wow, c'est très utile! J'ai cherché un moyen de nettoyer mon code. Merci! – dennismonsewicz

2
$.each($(elem).children(), function(index, value){ 
       childElements[index] = $(this); 
      }); 

Edit: Patrick est fait un point valide. Si vous voulez simplement un tableau d'objets enfants, un simple var childElements = $('selector').children(); devrait suffire. Vous n'avez pas besoin de la fonction sauf si vous voulez que les valeurs de ce tableau contiennent (une combinaison de) des attributs spécifiques provenant d'éléments enfants.

+0

Sweet! Merci! J'ai ajouté dans mon code de travail ci-dessus – dennismonsewicz

+0

@dennismonsewicz - Je suis un peu confus. Ceci est fonctionnellement équivalent à votre code original. – user113716

+0

@patrick - comment voulez-vous simplement mon code? Avoir à faire défiler chaque tableau est la seule façon de trouver le moyen de le faire. – dennismonsewicz

Questions connexes