Bonjour,
J'assiste à un phénomène étrange, mais j'espère facile à résoudre.
Sur une page d'un site de cuisine, j'ai deux divisions, chacune décomposées en plusieurs sous-divisions : La première div est la liste de tous les ingrédients référencés sur le site, la seconde div est la liste des ingrédients que le membre a en sa possession. Dans ces divisions, ce sont donc des suites de div d'ingrédients, classées selon leur classe (fruits, legumes, etc.). Ces listes sont générées à partir de PHP.
L'idée du script est de faire en sorte qu'en cliquant sur les éléments de la division de gauche, ceux-ci disparaissent et réapparaissent dans la division de droite, et vice-versa.
Le problème, c'est que dans le sens gauche -> droite, ça ne fonctionne que pour le premier élément.
Pour tous les autres, ils se contentent de disparaitre. Mais dès que le premier élément a disparu, le "nouveau" premier élément fonctionne de nouveau.
Dans le sens droite -> gauche, ça fonctionne très bien, quelque soit l'élément sélectionné.
Voilà la partie du script qui ne fonctionne pas :
Comme je le disais, son symétrique droite vers gauche fonctionne, en utilisant les mêmes principes.
Quand je fais un alert(element_cuisine) à la place de la ligne append, l'alert fonctionne pour tout élément et indique les bonnes valeurs.
Quand je le fais sous firebug, ça ne marche pas non plus, la fonction live() ne semble pas en cause non plus.
Bref, si quelqu'un voulait bien me donner son avis sur l'origine du problème, j'apprécierais énormément.
Merci !
J'assiste à un phénomène étrange, mais j'espère facile à résoudre.
Sur une page d'un site de cuisine, j'ai deux divisions, chacune décomposées en plusieurs sous-divisions : La première div est la liste de tous les ingrédients référencés sur le site, la seconde div est la liste des ingrédients que le membre a en sa possession. Dans ces divisions, ce sont donc des suites de div d'ingrédients, classées selon leur classe (fruits, legumes, etc.). Ces listes sont générées à partir de PHP.
L'idée du script est de faire en sorte qu'en cliquant sur les éléments de la division de gauche, ceux-ci disparaissent et réapparaissent dans la division de droite, et vice-versa.
Le problème, c'est que dans le sens gauche -> droite, ça ne fonctionne que pour le premier élément.
Pour tous les autres, ils se contentent de disparaitre. Mais dès que le premier élément a disparu, le "nouveau" premier élément fonctionne de nouveau.
Dans le sens droite -> gauche, ça fonctionne très bien, quelque soit l'élément sélectionné.
Voilà la partie du script qui ne fonctionne pas :
$("#widget_cuisineIngredients .element_recherche").live("click" , function(){
//retient les infos de l'élément et l'enlève du widget
var ing = $(this).html();
var ingId = $(this).attr("id");
var classe = $(this).prev("h4").attr("id");
$(this).remove();
//on crée l'élément à ajouter
var element_cuisine = '<div class="element_cuisine"><div class="supprIng">Supprimer</div>'+ing+'<input type="hidden" value="'+ingId+'" name="ingCuisine[]"/></div>';
//On ajoute
$('#maCuisine div#'+classe+'').find('.listeElementsCuisine').append(element_cuisine);
});
Comme je le disais, son symétrique droite vers gauche fonctionne, en utilisant les mêmes principes.
Quand je fais un alert(element_cuisine) à la place de la ligne append, l'alert fonctionne pour tout élément et indique les bonnes valeurs.
Quand je le fais sous firebug, ça ne marche pas non plus, la fonction live() ne semble pas en cause non plus.
Bref, si quelqu'un voulait bien me donner son avis sur l'origine du problème, j'apprécierais énormément.
Merci !