Il faut utiliser une fonction live :
Bonjour,
Voilà mon soucis, j'ai de base un bouton qui est lié à une fonction jquery.
Sur un site, j'affiche les 4 derniers articles, et je souhaite pouvoir afficher les 4 précédents à l'aide d'un bouton "plus ancien"
Ce bouton appelle un script en Ajax, qui génère du code HTML, et me renvoie le HTML (l'aperçu des 4 articles plus anciens) ainsi que de nouveaux boutons 'plus anciens' et "plus récent' (pour pouvoir revenir aux articles de base.
Le problème étant que comme j'injecte des boutons via le script AJAX, après le chargement du DOM (je suppose que le problème vient de là) et bien ces boutons n'ont aucun effet et n'appellent pas la fonction jquery, malgré le fait que la classe du bouton liée à la fonction jQuery n'a pas changé.
Mon code pour les boutons
Ma fonction jQuery
Ce que j'obtiens
Et bien, la première fois que je clique, la fonction est bien appelée et l'injection se fait, ça m'affiche alors le contenu et les nouveaux boutons, et lorsque je clique sur les nouveau boutons, le script n'est pas appelé (vérifié dans la console onglet network rien ne se passe)
Voici un aperçu :
https://drive.google.com/file/d/0BwyfqcrcYxKEQ0Y1X2ZvOWUzcGM/view?usp=sharing
4 réponses
ça fonctionne, génial merci bcp ! :D
De rien :)
C'est normal le dom est chargé avant, en utilisant la fonction live ( $(document) tu le recharge :)
C'est pas vraiment ça,
en réinjectant le bouton, tu perds le handler d'évènement placé dessus
Pour éviter ça il faut mettre le handler à un niveau supérieur, une div ou autre chose
Il y a une vidéo de Grafikart qui explique ça "Jquery.on"