J'ai donc quelques trucs HTML générés dynamiquement. Si vous cliquez sur un bouton, il ajoute un code html qui a un autre bouton, et vous pouvez ajouter cet autre code html plusieurs fois, en générant plusieurs copies de celui-ci. Tout cela est à l'intérieur d'un tag <form>
, donc je dois utiliser e.preventDefault()
sur chaque bouton pour empêcher javascript d'essayer de soumettre les données. Chaque bouton a également son propre code pour onclick
. Cependant, il y a un problème avec les javascript-added click events sur le contenu nouvellement généré. Si j'ai <button class="myBtn"></button>
, puis en javascript j'ai $(".myBtn").click(...)
, cela fonctionnera très bien, mais seulement pour les boutons qui existent déjà lorsque le code javascript est exécuté, ce qui signifie que les boutons nouvellement générés n'auront pas l'événement joint. La solution à ce problème est trouvée here.Ajout à innerHTML de document.body provoque jQuery .on() pour ne pas trouver sa cible
Nous arrivons maintenant au vrai problème. Tout cela fonctionne parfaitement, mais seulement jusqu'à ce que j'ajoute à document.body.innerHTML
. Dès que j'exécute la ligne document.body.innerHTML += "Text"
, le code du lien ci-dessus ne s'exécute plus lorsque le bouton généré est cliqué.
J'ai un exemple ici: https://jsfiddle.net/6hvgatLy/1/
Je ne savais pas que la réécriture du innerHTML supprime tous les écouteurs d'événements ! Cela a du sens cependant. Merci beaucoup! – Howzieky
Je vous recommande de modifier votre délégation d'événement comme suggéré pour éviter des problèmes comme celui-ci à l'avenir. – Jeff