en Javascript .. Si j'ai un bouton généré dynamiquement et que je veux une fonction onClick générique. Comment puis je faire ça ? Je ne souhaite pas créer une fonction onClick unique pour chaque bouton. Comment puis-je en faire un seul qui s'applique à tous. Par exemple, affichez son texte d'étiquette lorsqu'il est pressé.Ajouter un événement onClick à des boutons générés dynamiquement?
Répondre
Vous pouvez le faire en utilisant une fonctionnalité Javascript appelé "événement bouillonnant". Les éléments ancêtres sont notifiés des événements sur leurs éléments descendants.
Dans ce cas, vous pouvez attacher un gestionnaire click
à l'élément body
et tous les clics sur ces boutons déclencheront un gestionnaire d'événements. La plus belle façon de le faire en jQuery est d'utiliser la méthode on
:
$(document.body).on('click', 'button', function() {
alert ('button ' + this.id + ' clicked');
});
Cela fonctionne peu importe quand les éléments sont créés - avant ou après que les éléments ont été créés.
Cela fait exactement la même chose que la méthode live
, mais live
utilise on
dans les coulisses et est beaucoup moins efficace et flexible.
+1 pour la méthode on(). Je ne le savais jamais auparavant. J'ai beaucoup utilisé live(). Cela change tout. Merci –
@AhmadAlfy C'est probablement parce que c'est un ajout récent à l'API, introduit dans v. 1.7.0. – lonesomeday
Vous pouvez déléguer l'événement click aux parents des boutons créés dynamiquement. Voici une excellente explication de la façon dont cela fonctionne: http://davidwalsh.name/event-delegate
En jQuery, vous pouvez utiliser la méthode live
. se référer à son document au http://api.jquery.com/live/
Vous pouvez utiliser une méthode en direct qui va lier l'écouteur d'événement aux éléments existants et ceux qui seront créés dans le futur. Cependant, cela peut être écrit avant ou après le code où les boutons ont été créés
$("button[id^=btnInit]").live("click", function(){
// `this` is reference to each button separately - function will be called many times as how many buttons are
alert(this.id);
})
En dernière version de jQuery, vous pouvez utiliser à la place à la fois bind
et live
une méthode on
et au lieu unbing
et die
une méthode off
.
Dans jQuery> = 1,7
$("body").on("click","button[id^=btnInit]", function(){
// `this` is reference to each button separately - function will be called many times as how many buttons are
alert(this.id);
})
Si vous utilisez une version inférieure à jQuery 1.7, utilisez live()
$('input[name^="btnInit"]').live("click", function(){
alert("clicked");
});
pour jQuery 1.7+, utilisez on()
$("body").on("click", "input[name^="btnInit"]", function(){
alert("clicked");
});
- 1. Android - Obtenir l'ID des boutons générés dynamiquement
- 2. Ajouter un événement onclick à un div
- 3. ajouter dynamiquement des boutons?
- 4. ajouter un événement onclick à un div
- 5. Ajouter événement OnClick à Html.RadioButton
- 6. Comment ajouter à un événement onclick existant?
- 7. Ajouter un événement onClick document.createElement (« e »)
- 8. Événement div onclick généré dynamiquement
- 9. Ajouter dynamiquement des boutons à TableRow
- 10. greasemonkey ajouter un événement onclick au bouton
- 11. Comment ajouter des boutons dynamiquement
- 12. Comment ajouter des boutons dynamiquement?
- 13. Asp.net: pour appeler le gestionnaire d'événements des boutons générés dynamiquement?
- 14. Enregistrer les valeurs des boutons radio générés dynamiquement dans mysql
- 15. changer dynamiquement un événement onclick à une nouvelle fonction
- 16. ajouter un événement onclick à un bouton de lien créé dynamiquement
- 17. jquery ajouter un événement onclick à un lien href
- 18. Identification des éléments générés dynamiquement
- 19. Comment ajouter dynamiquement des boutons radio à une forme
- 20. Dynamiquement ajouter des boutons radio à l'aide JQUERY, puis décrocher l'événement de changement de jquery aux boutons radio générés
- 21. comment attribuer des événements à des boutons nouvellement générés. javascript
- 22. jqGrid Ajouter un événement onclick sur img
- 23. VB.net dynamique radiobuttons ajouter un événement onclick
- 24. comment ajouter un événement onclick à un bouton Twitter?
- 25. Résumé des champs générés dynamiquement
- 26. comment ajouter des boutons différents dynamiquement
- 27. générées dynamiquement boutons HTML: source de l'appelant de l'événement onclick
- 28. Comment ajouter des boutons à un ListBox?
- 29. Les boutons radio générés dynamiquement font check = true en Javascript
- 30. Comment lier des événements sur des boutons générés dynamiquement dans le backbone?
juste une suggestion: éviter de faire insérer plusieurs DOM dans une boucle . Faire une append() une fois si possibile, juste en dehors de la boucle. Ou - au moins - mettre en cache une référence à $ ('body') pour le bien de la performance – fcalderan
Créé ce violon pour vous montrer d'autres façons de créer les boutons; http://jsfiddle.net/eacUJ/ – Stefan