Maison > interface Web > js tutoriel > Gestion directe ou déléguée des événements dans jQuery .on() : quand dois-je utiliser lequel ?

Gestion directe ou déléguée des événements dans jQuery .on() : quand dois-je utiliser lequel ?

Linda Hamilton
Libérer: 2025-01-03 14:55:39
original
284 Les gens l'ont consulté

Direct vs. Delegated Event Handling in jQuery .on(): When Should I Use Which?

Gestion directe ou déléguée des événements dans jQuery .on()

La méthode jQuery .on() fournit deux options pour la gestion des événements : directe et déléguée. Dans le contexte de la gestion déléguée, la documentation indique que le gestionnaire d'événements n'est pas appelé lorsque l'événement se produit directement sur l'élément lié, mais uniquement pour les descendants correspondant au sélecteur. Cependant, cela soulève la question de savoir ce que l'on entend exactement par « exécute le gestionnaire pour tous les éléments ».

Gestion directe des événements

Dans la gestion directe des événements, un gestionnaire d'événements est affecté directement à un élément en utilisant la syntaxe suivante :

$("selector").on("event", function() {...});
Copier après la connexion

Dans ce cas, le gestionnaire d'événements est attaché à chaque élément qui correspond au sélecteur. Par exemple, le code suivant attribue un gestionnaire de clics à chaque avec la classe verte dans le

avec l'identifiant target :

$("div#target span.green").on("click", function() {
  alert($(this).attr("class") + " is clicked");
});
Copier après la connexion

Gestion déléguée des événements

Dans la gestion déléguée des événements, un gestionnaire d'événements est affecté à un élément parent en utilisant la syntaxe suivante :

$("parent").on("event", "child selector", function() {...});
Copier après la connexion

Dans ce cas, le gestionnaire d'événements est affecté à l'élément parent, mais il ne répond qu'aux événements qui se produisent sur les éléments descendants qui correspondent à l'enfant. sélecteur. Cette approche est utile pour attacher des gestionnaires d'événements à un contenu dynamique qui n'est pas présent lors du chargement initial de la page.

Prenons l'exemple suivant :

$("div#target").on("click", "span.green", function() {
  alert($(this).attr("class") + " is clicked");
});
Copier après la connexion

Dans cet exemple, le gestionnaire de clics est attaché au

avec la cible id. Cependant, il ne répond qu'aux clics effectués sur les éléments descendants éléments avec la classe verte.

Distinction clé

La distinction clé entre la gestion directe et déléguée des événements réside dans la relation entre l'élément cible et l'élément qui gère l'événement . Dans la gestion directe des événements, l'élément cible est également l'élément qui gère l'événement. Dans la gestion déléguée des événements, l'élément cible est le parent de l'élément qui gère l'événement.

Implications pratiques

En général, la gestion déléguée des événements est préférée lorsque vous travaillez avec contenu dynamique qui peut changer au fil du temps. En attachant des gestionnaires d'événements aux éléments parents, vous garantissez que les événements sont gérés même si de nouveaux éléments sont ajoutés à la page. La gestion directe des événements est plus appropriée pour le contenu statique qui ne changera pas avec le temps.

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!

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