2011-06-13 8 views
0

J'ai une question sur le clonage dans une boucle, deux problèmes en fait et juste en essayant de trouver le meilleur moyen de contourner le problème, voici mon code.jquery clonage dans une boucle?

$.each(data.customers,function(key, value){ 
    $('.customer').find('label').eq(0).text(value.name); 
    $('.customer').eq(0).clone().appendTo('#customers'); 
}); 

Le fichier data.customers est au format json, donc je ne peux pas faire de longueur. Mon problème est que jquery ajoutera toujours un élément clone à la fin de #customers. Je dois seulement ajouter si leur est un autre dans la collection de json. La seule façon dont je peux penser à le faire est de retourner le compte du tableau en json et de vérifier que la clé est égale à cela, ce qui semble absurde. Quel est le meilleur moyen de cloner des éléments lorsque vous traitez avec une boucle?

Quelqu'un peut-il aider.

+0

* "les uns les autres" *? Est-ce que cela signifie que votre 'data.customers' contient plus de clients que vous voulez ajouter? (aussi, montrer à quoi ressemble 'data') – Tomalak

+0

non c'est le bon nombre de clients mais je veux seulement cloner si c'est un autre dans la boucle pour cloner. Quand il finit la boucle, leur sera toujours un client cloné supplémentaire avec le clone du premier nom de client. – Ian

Répondre

1

Vous pouvez le faire:

D'abord, créer un "modèle clonage" spécifique pour les clients dans votre code HTML, assurez-vous que invisible via CSS (.template {display: none;}).

Ensuite, dans votre boucle:

$.each(data.customers, function (key, value) { 
    var $newCustomer = $('#customers .customer.template').clone(); 

    $newCustomer.removeClass("template").find('label:first').text(value.name); 
    $('#customers').append($newCustomer); 
}); 
+0

Je n'avais pas vraiment besoin de la classe de template dont j'avais juste besoin pour déplacer le clone et le stocker dans une variable afin que votre code m'a indiqué au bon endroit de toute façon, merci – Ian

+0

En fait, je l'ai fait, merci le code fonctionne – Ian