Jump to content

Interaction avec les nouveaux éléments créés via Jquery/ajax


Recommended Posts

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.

Link to post
Share on other sites

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??? :sick:

Link to post
Share on other sites

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? :nonono:

Si vous voulez, je peux y ajouter le code source pour une meilleure visibilité.

Link to post
Share on other sites

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.

Link to post
Share on other sites

Yes merci :whistling:

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.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...