Jquery inopérant sur du contenu généré en jquery
Résolu
ephelya
Messages postés
282
Date d'inscription
Statut
Membre
Dernière intervention
-
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
J'ai besoin, pour le back office que je suis en train de créer, de récupérer une liste de tags pour pouvoir la gérer.
Voici le script qui récupère mes tags
Ce script est ok et m'affiche bien ma liste.
Et voici le script qui me permet de gérer mes tags :
Ce script fonctionne parfaitement lorsque je le teste dans la console mais il ne se passe rien quand il est simplement dans mon code.
Je précise que les autres scripts de la page fonctionnent sans pb,qu'ils soient avant ou après celui-ci.
Ce n'est pas la première fois que j'ai des pbs avec les contenus du DOM générés en jquery/js, ça réagit comme si ils n'existaient pas...
Je précise également que ça ne marche pas non plus si je remplace par ce script
ou encore celui-ci, qui fonctionne très bien avec les autres boutons de la page :
Qu'est-ce que j'ai mal fait ??
Merci d'avance pour votre aide !! :)
J'ai besoin, pour le back office que je suis en train de créer, de récupérer une liste de tags pour pouvoir la gérer.
Voici le script qui récupère mes tags
$('label[class^=catype_').click(function (){ var idcat = $(this).find("input").attr("id").split("_")[1]; // console.log("test "+idcat); if ($(".list input:checked").length == 0) { $(".listrecipes").remove(); $(".list").before("<div class='listrecipes'></div>"); $.ajax({ type: "POST", //dataType: 'json', url: "ajx/ajax_nutrit.php", data: {gettags:1, idtype: idcat, debug:0}, error : function(x,err){ alert(err); }, success: function(data){ // console.log("ok "+data); $(data).each(function (a, b) { $(b).each(function (id, tag) { var lirec = "<li id='rec_"+tag.id+"'><span id='idtag'>"+tag.id+"</span><span class='tagtext'>"+tag.categorie+"</span><input class='n_idtag' type='text' placeholder='id tag'><input type='text' class='n_idtyp' placeholder='id type'><button class='afftag'><i class='fas fa-arrow-alt-circle-right'></i></button><li>"; $(".listrecipes").append(lirec); }); }); } });
Ce script est ok et m'affiche bien ma liste.
Et voici le script qui me permet de gérer mes tags :
$(".afftag").click(function(){ var idtag = $(this).parent().attr("id").split("_")[1]; var newtag = $(".listrecipes li#rec_"+idtag).find("input.n_idtag").val(); var newtype = $(".listrecipes li#rec_"+idtag).find("input.n_idtyp").val(); console.log("upd "+newtag+" "+newtype); });
Ce script fonctionne parfaitement lorsque je le teste dans la console mais il ne se passe rien quand il est simplement dans mon code.
Je précise que les autres scripts de la page fonctionnent sans pb,qu'ils soient avant ou après celui-ci.
Ce n'est pas la première fois que j'ai des pbs avec les contenus du DOM générés en jquery/js, ça réagit comme si ils n'existaient pas...
Je précise également que ça ne marche pas non plus si je remplace par ce script
$(".afftag").click(function(){ console.log("ok "); });
ou encore celui-ci, qui fonctionne très bien avec les autres boutons de la page :
$("button").click(function(){ console.log("ok "); });
Qu'est-ce que j'ai mal fait ??
Merci d'avance pour votre aide !! :)
Configuration: Macintosh / Firefox 84.0
A voir également:
- Jquery inopérant sur du contenu généré en jquery
- Word a trouvé du contenu illisible - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Contenu multimedia messenger disparu - Forum Facebook Messenger
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Bureautique
2 réponses
Bonjour
ce n'est pas un problème de jQuery, mais un souci de compréhension de fonctionnement du script en question...
Tu fais de l'Ajax.
(Qui, par défaut, fonctionne en mode asynchrone)
pour que ton code fonctionne, il faut attendre que ton Ajax soit terminé.
Le plus simple, c'est de mettre ce code dans le success ...
là, il sera bien exécuté une fois que ton appel Ajax sera terminé.
ce n'est pas un problème de jQuery, mais un souci de compréhension de fonctionnement du script en question...
Tu fais de l'Ajax.
(Qui, par défaut, fonctionne en mode asynchrone)
pour que ton code fonctionne, il faut attendre que ton Ajax soit terminé.
Le plus simple, c'est de mettre ce code dans le success ...
là, il sera bien exécuté une fois que ton appel Ajax sera terminé.
Okkkkk !!! C'est bon, ça fonctionne. Merci beaucoup ! :-)
Ceci dit ça me surprend pcq au moment où je clique, l'ajax est bel et bien terminé. Il y a un truc qui m'échappe dans le fonctionnement côté serveur, je crois...
Ceci dit ça me surprend pcq au moment où je clique, l'ajax est bel et bien terminé. Il y a un truc qui m'échappe dans le fonctionnement côté serveur, je crois...
Ok. Je saisis la logique mais c'est le fonctionnement global côté serveur que je ne voyais pas comme ça..
Je n'y connais pas grand chose en js/jquery, un de ces 4 je me plongerai dedans sérieusement. ;-)
Merci encore pour ton aide.
Ça fait un paquet de fois que tu me sauves la mise, depuis des années... Si tu décroches de temps en temps du boulot, un de ces 4 je t’offrirai un verre à Orléans, je te dois bien ça ! :D
Enfin si jamais les bars rouvrent un jour....
Je n'y connais pas grand chose en js/jquery, un de ces 4 je me plongerai dedans sérieusement. ;-)
Merci encore pour ton aide.
Ça fait un paquet de fois que tu me sauves la mise, depuis des années... Si tu décroches de temps en temps du boulot, un de ces 4 je t’offrirai un verre à Orléans, je te dois bien ça ! :D
Enfin si jamais les bars rouvrent un jour....