Je crée des éléments sur le DOM par JS. La question est, comment assigner la fonction .change() pour chaque nouvel élément créé?JQuery - comment lier une fonction change() à un <select> créé dynamiquement?
Répondre
Encore mieux que le .live()
, d'un point de vue de la performance, est .delegate()
. Cela fonctionne de la même manière que .live()
: il utilise quelque chose appelé événement bubbling, ce qui signifie que lorsqu'un événement est déclenché sur un élément DOM, les parents de cet élément sont tous notifiés de l'événement. delegate
, cependant, a une syntaxe quelque peu plus agréable et un avantage de performance substantiel.
$('#parentElement').delegate('select.yourSelectClass', 'change', function() {
// do your processing here
});
#parentElement
peut être un sélecteur qui correspond à l'élément ancêtre commun de tous les éléments select
que vous allez ajouter. Cela peut être document.body
, mais il y aura probablement un autre élément dans l'arborescence DOM auquel vous pouvez vous lier.
select.yourSelectClass
signifie que ce gestionnaire ne sera déclenché que sur certains éléments de la classe yourSelectClass
. Vous pouvez modifier ce sélecteur pour utiliser toute autre syntaxe de sélecteur jQuery comme vous le souhaitez.
Essayez la fonction live
: http://api.jquery.com/live/
Let jQuery.live()
être votre ami:
$('.yourSelectClass').live('change', function(event){
// Handle the Change event here.
});
Use jQuery live. (Version 1.3 ou supérieure)
$(".classOfJSCreatedElements").live('change',
function(event){
//do stuff
});
Si vous devez utiliser une ancienne version de jQuery utiliser le livequery plug-in
Source: jQuery FAQ
- 1. Comment lier SiteMap à un TreeView créé dynamiquement?
- 2. Comment lier à une fonction dynamiquement, similaire à live
- 3. Comment lier jQuery à un lien <a> à une fonction onclick?
- 4. Comment valider un contrôle créé dynamiquement?
- 5. Lier une fonction jquery aux éléments
- 6. Force la fonction .change() à exécuter - jQuery
- 7. C# Comment référencer un composant créé dynamiquement?
- 8. Comment lier dynamiquement une socket à une seule interface réseau?
- 9. JQuery Change() fonction IE problème
- 10. Accéder à un contrôle créé dynamiquement par javascript - ASP.NET
- 11. Comment lier dynamiquement une image en XAML?
- 12. Créer dynamiquement des éléments et les lier à une liste <T>
- 13. Comment lier dynamiquement un élément parent
- 14. Comment ajouter un noeud (étiquette) créé dynamiquement à l'emplacement désiré?
- 15. nhibernate lier dynamiquement une classe
- 16. Lier l'événement onClick à une fonction .click
- 17. Comment lier des événements dans Jquery pour un élément créé après le chargement d'un document?
- 18. Comment lier un gestionnaire d'événements à une instance dans JQuery?
- 19. ajouter dynamiquement écouteur à ajax contenu créé dans jQuery
- 20. Comment lier dynamiquement XML à un DataGrid WPF en C#
- 21. Lier/lier des listes dynamiquement/par programmation
- 22. Lier dynamiquement une extension Python (.pyd) à une autre extension
- 23. Comment lier une fonction à l'événement "Click" d'un ImageButton ajouté dynamiquement?
- 24. Java: Change String [] [] Dynamiquement
- 25. Comment passer un paramètre à une fonction Javascript définie dynamiquement?
- 26. Dynamiquement recherche à l'aide LINQ et créé dynamiquement prédicats
- 27. Comment puis-je lier à une table <tr>
- 28. ASP.NET - Bouton créé dynamiquement
- 29. Comment lier une liste <string> à ItemsControl?
- 30. Copie d'informations d'un contrôle utilisateur créé dynamiquement vers un autre contrôle utilisateur créé dynamiquement
Yah je viens de voir ça. J'ai utilisé .on à la place. –
Live a des problèmes de performance. Il écoute les changements dans tout le document DOM tandis que le délégué n'écoute que les changements dans l'arborescence DOM à partir de l'élément parent. – Najki