J'essaie de créer un script greasemonkey qui va créer dynamiquement des tables de données basées sur l'interaction de l'utilisateur avec ... autre dynamiquement créé des tables de données. Mon problème est que je dois faire deux passes chaque fois que je crée une table: une pour créer la table, et une autre pour aller chercher tous les objets dans la table que je veux ajouter aux gestionnaires d'événements (par id) et ajouter les différents gestionnaires d'événements pour eux.Comment enregistrer un gestionnaire d'événement javascript pour un élément qui n'a pas encore été ajouté à la page
Si j'essaie d'ajouter, par exemple, un événement onClick à une table td avant d'avoir créé la table et de l'avoir insérée dans le code HTML, j'obtiens une exception «composant non disponible».
Ceci est incroyablement lourd, car je dois soit maintenir, séparément, une liste des ID et ce que je devrais faire à ces éléments lorsque je fais ma deuxième passe pour ajouter les gestionnaires, ou développer une convention de nommage par laquelle je savoir, sur la base de la carte d'identité, ce que je devrais faire avec l'élément.
Il doit y avoir une meilleure façon de procéder. Je ne l'ai pas encore compris. Quelqu'un a des idées?
+1 pour la première partie de la réponse. Je n'aime pas vraiment la minuterie, mais je vois ce que tu veux dire. Je reste loin de jQuery. C'est une surcharge dans les applications exigeant des performances supérieures. – theoutlander
Depuis que j'ai écrit cette réponse, il peut y avoir de nouvelles façons pour que votre code soit notifié lorsque de nouveaux éléments apparaissent sur le DOM autre que l'interrogation périodique, je ne sais pas. Mais la meilleure réponse dans la plupart des cas serait d'utiliser le bouillonnement d'événement à la place. Cela dépend de la chaîne d'éléments pour transmettre l'événement à un parent commun. – thomasrutter