2010-04-25 9 views
0

J'ai une série de divs comme ceci:clone jquery une seule fois

<div id="available-posts"> 
    <div class="post" id="unique_id"> 
     <a href="#" class="addme">Add</a> Some text 
    </div> 

    <div class="post" id="unique_id"> 
     <a href="#" class="addme">Add</a> Some text 
    </div> 
</div> 

Le id_unique est un numéro différent pour chacun des divs.

Maintenant, j'ai un nouveau vide div comme ce

<div class="related-posts"></div> 

Et je clone éléments là-dedans.

Le fait est que je veux vérifier si un élément est déjà cloné. Si c'est je veux l'empêcher d'être cloné à nouveau.

Voici comment je clone produits

// clone it 
$('.addme').live('click', function() { 
     $(this).parents('div.thepost').clone().fadeIn('normal').appendTo('#related-posts').find('a.addme').html('Remove').removeClass('addme').addClass('removeme'); 
     return false; 
}); 

// remove it 
$('.removeme').live('click', function() { 
     $(this).parents('div.thepost').fadeOut('normal', function() {$(this).remove(); }); 
     return false; 
}); 

En d'autres mots que je veux la liste clonée pour contenir uniquement des objets uniques. Pas par exemple 2 clones du même post. * Edit: j'utilise live coz la première liste (posts disponibles) est remplie par un appel AJAX.

Répondre

1

Il suffit d'aller de l'avant et vérifier s'il y a un div avec un tel ID déjà:

$('.addme').live('click', function() { 
     var post = $(this).parents('div.thepost'); 
     var postId = post.attr("id"); 
     if ($("#related-posts").find("#" + postId).size()) return; 

     post.clone().fadeIn('normal').appendTo('#related-posts').find('a.addme').html('Remove').removeClass('addme').addClass('removeme'); 
     return false; 
}); 
+0

il est logique :) Thanx – tsiger