Maison > interface Web > js tutoriel > Comment migrer correctement « live() » de jQuery vers « on() » pour les éléments ajoutés dynamiquement ?

Comment migrer correctement « live() » de jQuery vers « on() » pour les éléments ajoutés dynamiquement ?

Linda Hamilton
Libérer: 2024-12-16 05:22:10
original
730 Les gens l'ont consulté

How to Correctly Migrate jQuery's `live()` to `on()` for Dynamically Added Elements?

Transition de live() à on() dans jQuery : débogage de la liaison d'événement

La méthode live() de jQuery a été abandonnée dans la version 1.7, nécessitant un passage à on( ). Bien que le remplacement de live() par on() devrait idéalement donner des résultats similaires, la documentation on() souligne que les gestionnaires d'événements ne se lient qu'aux éléments actuellement sélectionnés présents sur la page au moment de la liaison.

Original Implémentation (live()) :

$('select[name^="income_type_"]').live('change', function() {
    alert($(this).val());
});
Copier après la connexion

Remplacement (on()):

$('select[name^="income_type_"]').on('change', function() {
    alert($(this).val());
});
Copier après la connexion

La différence avec live() vient du fait que on() ne se lie qu'aux éléments actuellement existants, contrairement au mécanisme de délégation de live() qui attachait l'événement gestionnaires d'éléments ajoutés dynamiquement au DOM.

Utilisation correcte de on() pour les éléments dynamiques :

Pour maintenir la gestion des événements pour éléments ajoutés dynamiquement avec on(), le gestionnaire d'événements doit être lié à un élément parent qui existe sur la page au moment de la liaison. Ceci peut être réalisé en utilisant :

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});
Copier après la connexion

Alternativement, la délégation d'événements peut être appliquée plus près dans la hiérarchie des éléments pour améliorer la spécificité.

Note de la documentation jQuery :

La documentation live() note explicitement que la réécriture de live() en termes de ses successeurs implique de lier les gestionnaires d'événements aux gestionnaires d'événements existants. éléments :

$(document).on(events, selector, data, handler);  // jQuery 1.7+
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal