Maison > interface Web > js tutoriel > Comment puis-je implémenter efficacement la délégation d'événements dans Vanilla JavaScript ?

Comment puis-je implémenter efficacement la délégation d'événements dans Vanilla JavaScript ?

DDD
Libérer: 2024-11-24 08:25:10
original
280 Les gens l'ont consulté

How Can I Effectively Implement Event Delegation in Vanilla JavaScript?

Délégation d'événements dans Vanilla JavaScript : un guide complet

Réaliser la délégation d'événements dans Vanilla JavaScript fournit un moyen efficace et maintenable de gérer les écouteurs d'événements. Contrairement à la délégation d'événements de jQuery, qui implique la modification de prototypes intégrés, Vanilla JavaScript offre une approche plus robuste grâce à l'utilisation de la délégation d'événements avec '.closest()'.

Traduction de la délégation d'événements jQuery en Vanilla JavaScript

Pour traduire l'exemple jQuery :

$('#main').on('click', '.focused', function(){
    settingsPanel();
});
Copier après la connexion

En JavaScript Vanilla, nous use :

document.querySelector('#main').addEventListener('click', (e) => {
  if (e.target.closest('.focused')) {
    settingsPanel();
  }
});
Copier après la connexion

La méthode '.closest()' vérifie si l'élément cliqué a un élément parent qui correspond au sélecteur '.focused'. Si tel est le cas, il invoque la fonction « settingsPanel() ».

Optimisation pour le chaînage d'événements complexes

Pour améliorer les performances, en particulier lorsqu'il s'agit d'éléments imbriqués, envisagez d'utiliser un retour anticipé :

document.querySelector('#main').addEventListener('click', (e) => {
  if (!e.target.closest('.focused')) {
    return;
  }
  // code of settingsPanel here, if it isn't too long
});
Copier après la connexion

Cette approche évite l'exécution inutile de code lorsque le sélecteur '.focused' n'est pas matched.

Démonstration en direct

L'extrait de code suivant montre comment utiliser la délégation d'événements de Vanilla JavaScript avec '.closest()' :

document.querySelector('#outer').addEventListener('click', (e) => {
  if (!e.target.closest('#inner')) {
    return;
  }
  console.log('vanilla');
});

$('#outer').on('click', '#inner', () => {
  console.log('jQuery');
});
Copier après la connexion

Dans cet exemple, cliquer sur l'élément '#inner' enregistrera "vanilla" sur la console, démontrant l'événement Vanilla JavaScript. délégation.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal