2010-12-09 26 views
1

Je suis nouveau à jQuery, familier avec PHP & CSS. J'ai imbriqué, dynamiquement généré div que je souhaite envoyer (les ID) à un script côté serveur pour mettre à jour les numéros. Je veux tout vérifier dans la classe .content. Seuls les div avec des ID doivent être envoyés pour traitement; mais je vais avoir du mal à faire un enfant récursifs() vérifier ... c'est le meilleur (non récursive) que je pouvais faire:Récursion de .children() pour rechercher l'attribut id

$(".content").children().each(function() { 
    if ($(this).attr('id').length == 0) { 
     $(this).children().each(function() { 
      if ($(this).attr('id').length == 0) { 
       $(this).children().each(function() { 
        if ($(this).attr('id').length == 0) { 
         $(this).children().each(function() { 
          alert($(this).attr('id')); 
         }); 
        } 
       }); 
      } 
     }); 
    } 
}); 

et il vient d'alerte() de l'id de tout à la niveau où ils devraient être. Il doit y avoir un meilleur moyen de le faire ... merci d'avance pour tout conseil. -Justin

Répondre

5

Essayez:

var ids = $('.content div[id]').map(function() { 
    return this.id; 
}).get(); 

.content div[id] Choisirez-vous tous les descendants div (à tout niveau) de .content avec des attributs d'identité non vides. La partie [id] est un exemple du sélecteur Has Attribute.

J'ai utilisé .map. pour extraire les ID des correspondances et .get() pour convertir l'objet résultant en un tableau de base.

Essayez ici: http://jsfiddle.net/M96yK/

+0

confirmée par alerte (ids) ;. Merci pour la réponse rapide. – Justin

+0

@Justin - N'importe quand! – karim79

1

Vous pouvez faire:

$(".content div[id]"); 

Cela renverra un objet jQuery qui contient tous les DIV qui ont id spécifié