wallou GT Posté 8 Février 2009 Posté 8 Février 2009 Help Je travaille actuellement sur un moteur de recherche qui met à jour le nombre de résultat trouvé au fil de l'eau en jquery / ajax. Ce que je souhaiterais faire exactement c'est afficher de nouveaux éléments de recherche en fonction des choix précédents. Cela fonctionne très bien pour le premier niveau, c'est à dire : je sélectionne un menu et un autre sous-menu s'affiche en fonction de la valeur du premier le problème est que je n'arrive pas à faire la même chose à partir du second niveau. J'ai l'impression qu'il n'y a plus aucune interaction. Je ne sais pas si j'ai été suffisamment clair dans mes explications, mais si quelqu'un a déjà rencontré ce problème, je suis preneur.
petit-ourson Posté 9 Février 2009 Posté 9 Février 2009 Je n'ai rien compris, mais j'espère que d'autres ne seront pas dans le même cas que moi ;o)
wallou GT Posté 9 Février 2009 Auteur Posté 9 Février 2009 Désolé, je vais tenter d'être plus clair: Le fait de sélectionner un élément dans mon premier menu déroulant ( évènement change() ) déclenche un appel ajax. Coté serveur, je génère un nouveau menu déroulant (en fonction de la sélection) que j'alimente dans une nouvelle div. De là, je souhaiterais réitérer cette manipulation, mais là, rien ne se passe C'est à dire que je voudrais générer un 3° menu déroulant à partir d'un élément sélectionné dans mon 2°(qui a été créé dynamiquement je le rappelle). Mais j'ai l'impression que le problème vient de là : il est à priori impossible de définir des actions sur des objets qui n'existent pas encore lors du premier chargement de la page. Est-ce le cas???
captain_torche Posté 9 Février 2009 Posté 9 Février 2009 Juste après avoir créé ton second menu (appelons-le menu2), tu devrais pouvoir faire quelque chose comme ça : $('#menu2').change(function() { // ton code});
wallou GT Posté 9 Février 2009 Auteur Posté 9 Février 2009 C'est bien ce que j'ai fait. En fait, cela ne fonctionne que si le menu2 existe déjà au chargement. Mais dès lors qu'il est regénéré via le menu1, cela ne fonctionne plus.. How bizarre, non? Si vous voulez, je peux y ajouter le code source pour une meilleure visibilité.
captain_torche Posté 9 Février 2009 Posté 9 Février 2009 Ce que je voulais dire, c'est que tu ajoutes ce code juste après la création de menu2, dans lors du chargement de la page.
pluriels Posté 9 Février 2009 Posté 9 Février 2009 pour théoriser un peu tout ça : - chargement de la page - affectation des évènements sur les objets de premier niveau - appel ajax sur les objets de premier niveau - chargement des éléments de deuxième niveau - et quand tu cliques rien ne se passe... Normal, car tes éléments de deuxième niveau n'existaient pas quand tu as affecté les évènements. Comme l'indique Captain_torche, il faut dans l'appel ajax affecter les évènements sur les nouveaux éléments. Une autre astuce est de gérer les événements sur un objet de niveau supérieur qui ne bouge pas en fonction des appels ajax. Ce qu'on appelle la délégation d'évènement Le lien est un exemple pour Yahoo UI, mais la logique est la même pour jQuery ou autre.
wallou GT Posté 9 Février 2009 Auteur Posté 9 Février 2009 Yes merci Ca marche. Je n'avais pas compris la nuance. L'allocation de l'évènement s'effectue bien dans le retour de la fonction Ajax/success après la génération de mon nouveau menu!! Enfin bref... Quelle puissance ce Jquery Merci à tous les deux.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant