Points de base
- Les délégués d'événements en jQuery sont une technique pour attacher un seul gestionnaire d'événements à un élément parent au lieu de plusieurs gestionnaires attachés à des éléments individuels, réduisant ainsi l'utilisation de la mémoire et améliorant les performances.
- Fonction jQuery
on()
peut être utilisée pour implémenter le délégué d'événements, et le deuxième paramètre facultatif spécifie le sélecteur pour le gestionnaire d'événements du délégué. Utilisez ensuite l'attributevent.target
pour identifier quel élément a déclenché l'événement. - Dans les applications dynamiques, les éléments sont souvent ajoutés ou supprimés, et les délégués d'événements sont particulièrement utiles car il élimine la nécessité de gérer les événements manuellement et réduit la complexité du code. Cependant, il convient de noter que le gestionnaire de sous-événements gère avant de déléguer le gestionnaire d'événements et peut empêcher l'événement de se propager.
jQuery simplifie la gestion des événements en javascript. Cependant, plus les gestionnaires d'événements sont définis, plus il y a de mémoire, ce qui entraînera éventuellement une dégradation des performances et ralentir l'interface utilisateur. Cet article explore comment les délégués d'événements peuvent aider à prévenir cela et comment les délégués d'événements peuvent être appliqués dans jQuery. Les délégués d'événements sont une technique de traitement d'événements qui, au lieu de ajouter un gestionnaire d'événements, est directement à chaque élément qui est d'écouter un événement, il ajoute un seul gestionnaire d'événements à l'élément parent de ces éléments pour écouter pour ses éléments enfants. Lors du traitement d'un événement, vérifiez quel élément déclenche l'événement et répond en conséquence. Les délégués d'événements dépendent des bulles d'événements dans le DOM. Il s'agit du processus d'événements déclenchés sur les enfants se propageant à l'arbre Dom à son élément parent et à son élément parent, etc. jusqu'à ce qu'il atteigne le document. Les programmeurs peuvent utiliser event.stopPropagation()
pour arrêter de bouillonner. Notez que tous les événements DOM ne se propageront pas, le focale, le brouillage, la charge et le déchargement ne le feront pas. Les délégués d'événements utilisent moins de mémoire car vous remplacez plusieurs gestionnaires d'événements par un seul gestionnaire d'événements. Par exemple, si vous joignez un gestionnaire d'événements à chaque lien dans la liste des dix liens, dix gestionnaires d'événements occupent un espace mémoire. Au lieu de cela, si vous utilisez des délégués d'événements et gérez les événements sur l'élément parent, un seul gestionnaire d'événements est créé et moins de mémoire est utilisée que la mémoire attachée à chaque lien séparément. En plus de réduire la consommation de mémoire, la délégation des événements présente également les avantages suivants:
- Pas besoin de gérer manuellement les événements lors de l'ajout d'éléments ou de supprimer des éléments de DOM. Si nous utilisons la gestion des événements traditionnels, nous devons attacher le gestionnaire d'événements à l'élément ajouté au DOM et supprimer le gestionnaire d'événements de l'élément supprimé du DOM.
- Réduisez le code à gérer avec moins de gestionnaires d'événements. Cela peut simplifier notre code sans aucune logique de traitement des événements en double, ce qui aide à garder notre javascript concis et sec.
Exemple de délégation d'événements dans jQuery
Supposons que vous développez une application à une seule page qui vend des photos de chaton. Lorsque la page se charge, les 20 meilleurs chatons seront affichés. Lorsque l'utilisateur fait défiler la page, plus de chatons seront chargés. Notre HTML ressemble à ceci:
<div id="cats"> <ul> <li> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <a href="https://www.php.cn/link/207f170979dd72ff5776e20d07c28732">More info</a> <button>Add to cart</button> </li> ... </ul> </div>
En utilisant la manipulation des événements traditionnels, nous devons connecter le gestionnaire d'événements à:
- Une image plus grande s'affiche lorsque l'utilisateur clique sur la vignette.
- Plus d'informations s'affichent lorsque l'utilisateur clique sur le lien "plus d'informations".
- Ajoutez l'image au panier lorsque l'utilisateur clique sur "Ajouter au panier".
- attacher ces trois événements au nouvel élément DOM ajouté lorsque l'utilisateur fait défiler la page.
Ce code sera similaire à l'exemple suivant. Notez que cela est destiné à montrer comment l'ajout d'un gestionnaire d'événements vers des éléments individuels diffère de l'utilisation des délégués d'événements, il n'y a donc aucune implémentation prévue pour loadImage()
, moreInfo()
, addToCart()
et loadNewKittens()
fonctions.
$(document).ready(function() { var cats = $('#cats'); cats.find('img') .on('click', function() { loadImage(); }) cats.find('a') .on('click', function(event) { event.preventDefault(); moreInfo(); }); cats.find('button') .on('click', function() { addToCart(); }); $(window).scroll(function() { var fragment = loadNewKittens(); // 为新的DOM元素附加事件处理程序 fragment.find('img') .on('click', function() { loadImage(); }); fragment.find('a') .on('click', function(event) { event.preventDefault(); moreInfo(); }); fragment.find('button') .on('click', function() { addToCart(); }); fragment.appendTo('#cats ul'); }); });
Le volume de code est assez grand. Voyons maintenant à quoi ressemble notre code si nous utilisons les délégués d'événements:
$(document).ready(function() { $('#cats') .on('click', 'img, a, button', function(event) { event.preventDefault(); var target = event.target; switch(target.tagName.toLowerCase()) { case 'img': loadImage(); break; case 'a': moreInfo(); break; case 'button': addToCart(); break; default: // 什么也不做 } }); $(window).scroll(function() { var fragment = loadNewKittens(); fragment.appendTo('#cats ul'); }); });
La clé réside dans le deuxième paramètre facultatif de on()
. En passant le sélecteur ici, on()
sait qu'il gère le gestionnaire d'événements du délégué au lieu du gestionnaire d'événements directement lié. Notre code de gestion des événements est beaucoup plus simple maintenant. En obtenant event.target
et en commutant en fonction de son tagName
, nous pouvons déterminer quel élément a déclenché l'événement et répondre en conséquence. De plus, nous n'avons plus besoin d'attacher des gestionnaires d'événements aux éléments chargés dans $(window).scroll
, car les événements déclenchés par ces nouveaux éléments sont délégués à l'élément parent. Un "piège" potentiel à noter lors de l'utilisation des délégués d'événements est que tout gestionnaire d'événements attaché à un élément enfant est géré avant que le gestionnaire d'événements délégate ne déclenche . Par conséquent, le gestionnaire de sous-événements peut appeler ou retourner event.stopPropagation()
, ce qui empêchera l'événement de bouillonner dans le gestionnaire d'événements du délégué et vous laissera perplexe expliquant pourquoi votre événement n'est pas délégué. false
Conclusion
Dans cet article, nous étudions la délégation des événements. Nous avons vu comment cela peut aider à améliorer les performances d'un site Web en réduisant la charge de traitement des événements qu'il doit supporter. Nous avons également vu comment implémenter le délégué d'événements dans jQuery via la fonction. on()
Les questions fréquemment posées sur la délégation de l'événement jQuery
Qu'est-ce que le délégué des événements à jQuery et pourquoi cela compte?Les délégués d'événements en jQuery sont une technique qui vous permet de joindre un seul auditeur d'événements à l'élément parent, qui tirera pour tous les descendants de sélecteurs assortis, que ces descendants existent maintenant ou s'ajoutent à l'avenir. Ceci est important car il peut considérablement améliorer les performances en réduisant le nombre de gestionnaires d'événements requis par l'application. Au lieu d'ajouter des gestionnaires d'événements individuels à chaque élément, vous pouvez déléguer des événements aux éléments parents. Ceci est particulièrement utile dans les applications dynamiques où les éléments sont ajoutés ou supprimés dynamiquement.
Comment fonctionne la délégation des événements dans jQuery?
Les délégués d'événements en jQuery profitent du fait que la plupart des événements jQuery bouillonner ou se propageront à l'arbre Dom. Lorsqu'un événement est licencié sur un élément enfant, il bouillonnera à son élément parent. En ajoutant un auditeur d'événements à l'élément parent, vous pouvez capturer des événements déclenchés sur l'un de ses éléments enfants. L'attribut event.target
peut être utilisé pour déterminer quel élément enfant a déclenché l'événement.
Quelle est la différence entre les événements directs et les événements délégués dans jQuery?
Les événements directs sont directement attachés à des éléments spécifiques, et seuls ces éléments peuvent déclencher des événements. D'un autre côté, les événements délégués sont attachés à l'élément parent et tout élément enfant peut déclencher des événements. L'avantage des événements délégués est qu'ils peuvent gérer des événements d'éléments enfants ajoutés dynamiquement.
Comment utiliser la méthode .on()
pour effectuer une délégation d'événements dans jQuery?
La méthode .on()
dans jQuery est utilisée pour attacher des gestionnaires d'événements. Pour les délégués d'événements, vous utiliserez trois paramètres: type d'événement, chaîne de sélecteur utilisée pour filtrer les descendants et les fonctions de gestionnaire. Un type d'événement est une chaîne représentant le type d'événement (par exemple, "cliquez"), une chaîne de sélecteur est utilisée pour filtrer les descendants de l'élément sélectionné qui déclenche l'événement, et une fonction de gestionnaire est une fonction à exécuter lorsque l'événement est déclenché.
Puis-je utiliser le délégué d'événements pour gérer des éléments ajoutés dynamiquement dans jQuery?
Oui, l'un des principaux avantages des délégués d'événements dans jQuery est qu'il peut gérer des événements d'éléments qui sont ajoutés dynamiquement. Étant donné que l'écouteur d'événements est attaché à l'élément parent, il peut capturer des événements déclenchés sur l'un de ses éléments enfants, même si ces événements sont ajoutés après l'attachement de l'écouteur de l'événement.
Qu'est-ce que la bulle d'événements, et qu'est-ce que cela a à voir avec la délégation des événements à jQuery?
L'événement Bubble est un type de propagation d'événement dans lequel un événement commence par l'élément spécifique qui le déclenche puis bouillonne vers ses ancêtres. Les délégués d'événements dans jQuery utilisent des bulles d'événements pour joindre les écouteurs d'événements aux éléments parents. Lorsqu'un événement est licencié sur un élément enfant, il bouillonnera à l'élément parent, où l'écouteur de l'événement peut le capturer.
Comment arrêter la propagation des événements dans jQuery?
Vous pouvez utiliser la méthode .stopPropagation()
pour arrêter la propagation des événements dans jQuery. Cette méthode empêche les événements de bouillonner dans l'arbre Dom, empêchant ainsi tout gestionnaire parent de recevoir des notifications d'événements. Cependant, vous devez l'utiliser avec prudence car cela rendra votre code plus difficile à déboguer et à comprendre.
et .bind()
utilisées pour le traitement des événements dans jQuery? .on()
La méthode dans jQuery est utilisée pour attacher un gestionnaire d'événements directement à un élément. D'un autre côté, la méthode .bind()
peut être utilisée pour attacher un gestionnaire d'événements directement à un élément (tel que .on()
) ou à un élément parent pour la déléguation des événements. La méthode .bind()
est plus générale et est la méthode préférée pour attacher des gestionnaires d'événements dans jQuery. .on()
Puis-je utiliser le délégué des événements pour gérer les événements personnalisés dans jQuery?
Oui, vous pouvez utiliser le délégué des événements pour gérer les événements personnalisés dans jQuery. Comme les événements standard, vous pouvez joindre un écouteur d'événements à un élément parent, qui capturera des événements personnalisés déclenchés sur l'un de ses enfants.
Comment supprimer le gestionnaire d'événements à jQuery?
Vous pouvez utiliser la méthode .off()
pour supprimer le gestionnaire d'événements dans jQuery. Cette méthode peut être utilisée pour supprimer tous les gestionnaires d'événements sur un élément, ou pour supprimer uniquement les gestionnaires d'événements avec un type d'événement spécifique ou un espace de noms connecté.
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!

Le choix de Python ou JavaScript doit être basé sur le développement de carrière, la courbe d'apprentissage et l'écosystème: 1) le développement de carrière: Python convient à la science des données et au développement de back-end, tandis que JavaScript convient au développement frontal et complet. 2) Courbe d'apprentissage: la syntaxe Python est concise et adaptée aux débutants; La syntaxe JavaScript est flexible. 3) Ecosystème: Python possède de riches bibliothèques informatiques scientifiques, et JavaScript a un puissant cadre frontal.

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.
