2012-07-23 5 views
0

J'ai un site ici où l'utilisateur peut cliquer sur certains divs. Puis-je ajouter un « X » à l'aide de ce code:jQuery/JavaScript: clonage avec contenu ajouté dynamique

function addEx(elem, insertClass) { 
     var element = $(elem); 
     var newInsertClass = insertClass.replace('.', ''); 
     var insert = "<span class='" + newInsertClass + "'> X </span>"; 

     element.click(function(){ 
      var $this = $(this); 

      if($this.text().indexOf("X") >= 0) { 
       var id = $this.attr("id"); 
       $("#" + id + " " + insertClass).remove(); 
      } else { 
       $this.append(insert); 
      } 
     }) 
    } 

Comme vous pouvez le voir, si le « X » est déjà là, je le retirer. Si ce n'est pas là, je l'ajoute. Cela fonctionne bien.

L'utilisateur peut également cliquer sur un bouton "obtenir des résultats". Les divs sur lesquels l'utilisateur a cliqué sont ensuite comparés aux bonnes réponses. D'après cela, j'ajoute des classes aux divs qui ont été cliqués correctement, trop ou qui ont été oubliés de cliquer. Cela fonctionne également, mais le contenu (le "X") est perdu. Donc, je peux voir le CSS-stlying que j'ai fourni pour ces classes, mais le "X" à l'intérieur de la div est manquant après le remplacement de l'original par le clone. Pour ajouter les classes que j'utilise ce code:

var test = $(".test"); 
var clone = test.clone(true,true); 


function correction() { 
    clone.children().filter(function() { 
     return $.inArray('#' + this.id, forgotten) != -1; 
    }).addClass("forgotten").end().filter(function() { 
     return $.inArray('#' + this.id, toomuch) != -1; 
    }).addClass("toomuch").end().filter(function() { 
     return $.inArray('#' + this.id, correct) != -1; 
    }).addClass("right"); 

    test.replaceWith(clone);     
} 

I clone l'élément ici, puis ajoutez les classes appropriées sur le clone et remplacer l'original avec le clone.

Alors ma question est: Comment puis-je empêcher cette perte de contenu? Je suppose que c'est parce que les "X" sont ajoutés dynamiquement? Ou j'ai aussi plus d'un élément avec .test - pourrait-il être la cause?

Répondre

1

Le John Resig a répondu à un question sur les objets de clonage utilisant jQuery. Il pourrait vous aider

+0

Ha! Merci, ça a fait le boulot! :-) – Sven

Questions connexes