[jQuery-fr] Mini soucis à la suite d'un clone

11 views
Skip to first unread message

Pascal

unread,
Apr 3, 2012, 11:28:49 AM4/3/12
to jque...@rezo.net
Bonjour à tous et à toutes.

J'espère que cette ml est toujours active.
Voici mon soucis

Je dispose d'un input suivie d'un petit + (aucune présentation) et je
souhaite cloner ces 2 éléments. J'utilise donc jquery et sa fonction
clone() et le tour est joué. J'ai donc créé un petit code. Quand je
clique sur le petit +, cela me clone et m'affiche mon second input avec
le +, le premier quand a lui disparait.
Voici mon code:
$(function() {
$("a#addparticipanti").click(function(e)
{
// annule l'action du click
e.preventDefault();
// récupérer de la class par défaut
div=$("#copy").attr('class');
//j'incrémente la class du tr pour éviter des conflits'
count=parseInt(div.replace(new RegExp("[^(0-9)]", "g"),
''))+1;
// Je clone

$("#copy").clone().removeClass(div).addClass('c'+count).appendTo('table.participanti');
//je supprimer la div #clone précédement existante
$('.'+div).removeAttr('id');
//je supprime le ajouter initial (présentation)
$(this).remove();
}
);
});
Cependant, si je clique sur ce second + pour avoir un troisième input,
il n'est plus actif.
Avez vous une solution?
Merci d'avance.


Pascal
_______________________________________________
jQue...@rezo.net - http://listes.rezo.net/mailman/listinfo/jquery-fr

Fanel Dev

unread,
Apr 3, 2012, 12:58:42 PM4/3/12
to jque...@rezo.net
Oui c'est normal, car quand tu instancie ton jQuery, tu utilises la
fonction .click(), qui va parser le DOM et attacher l'evenement à
l'élément qu'il trouve (a#addparticipanti). ensuite, tu remove cet
élément, et tu le créés à nouveau, mais tu n'a pas demandé à jQuery de
lui attacher un évènement.
Pour contrer ce problème, jQuery possède 2 autres fonctions très utiles,
.live() et .delegate() (je te laisse lire la doc pour la culture, ça
fait jamais de mal) :

Donc remplace :
$("a#addparticipanti").click(function(e)

par :
$("a#addparticipanti").live('click', function(e)

qui va permettre à jQuery d'attacher un évènement en live, dès que
l'élèment est créé.

Cela devrait marcher parfaitement.

Cordialement,
David

Reply all
Reply to author
Forward
0 new messages