11548 sujets

JavaScript, DOM et API Web HTML5

Bjr,

j'utilise jquery pour faire une requête Ajax, que j'intègre dans une div avec ".html()".
Ca marche très bien, sauf que la réponse est un bout de html qui a sa propre vie, des liens, des classes ... et rien ne marche quand on y fait référence après, du genre "$(.Classe)...". Le dom n'est pas mis à jour !!!

Solution pour corriger ça?

Merci
C'est assez vague, mais ça ressemble à un pb d'event delegation. Regarde du côté des méthodes live() et delegate() de jquery.
Ou peut être tout simplement que l’élément n'est pas encore crée dans le dom quand tu essai d'y accéder?
saturdaynightshuffle a écrit :
la réponse est un bout de html qui a sa propre vie, des liens, des classes ... et rien ne marche quand on y fait référence après

Rien ne marche quand tu y fais référence après avoir mis à jour le DOM avec le contenu de la réponse?

Parce que si tu as du code qui fait référence à des nœuds DOM qui n'existent pas encore, là c'est normal que ça marche pas.

Pour rappel, l'ordre probable d'exécution de différentes actions dans une utilisation courante de jQuery:
// 1. Ajout d'un gestionnaire d'évènement
$('#machin').click(function(){
  // 3. Appel Ajax qui a pour résultat une modification du DOM
  // ...
});
// 2. Ajout d'un gestionnaire d'évènement et si #truc n'existe pas encore dans le DOM... bah ça marche pas
$('#truc').click(function(){
  // ...
});

La fonction anonyme associée au clic sur #machin sera à coup sûr appelée bien après l'ajout du gestionnaire d'évènement en 2.
Modifié par fvsch (24 Oct 2011 - 14:16)
ca marche, merci à vous.

En fait, ca n'a rien à voir avec Ajax, j'ai déplacé le '#Truc' après l'affichage de la réponse Ajax. Avant il était au début de mon script de 500 lignes !!!!

Bonnes journées