Maison interface Web js tutoriel Analyse approfondie du principe de bouillonnement d'événements JS : explication détaillée du bouillonnement d'événements

Analyse approfondie du principe de bouillonnement d'événements JS : explication détaillée du bouillonnement d'événements

Jan 13, 2024 am 10:57 AM
事件冒泡 原理 événement bouillonnant

Analyse approfondie du principe de bouillonnement dévénements JS : explication détaillée du bouillonnement dévénements

Explication détaillée des événements bouillonnants JS : pour comprendre le principe du bouillonnement d'événements en profondeur, des exemples de code spécifiques sont nécessaires

Le bouillonnement d'événements est un concept important en JavaScript et il joue un rôle important dans les navigateurs. En comprenant le principe de la propagation des événements, nous pouvons mieux comprendre le processus de propagation des événements dans l'arborescence DOM, puis gérer les événements de manière flexible.

1. Le principe du bouillonnement d'événements
Le bouillonnement d'événements signifie que lorsqu'un élément de l'arborescence DOM déclenche un événement, l'événement sera propagé aux éléments supérieurs dans l'ordre de l'arrière vers l'avant. Pour faire simple, l’événement partira de l’élément déclencheur et se propagera aux éléments supérieurs couche par couche jusqu’à l’élément racine.

Par exemple, supposons que nous ayons la structure HTML suivante :

<div id="grandparent" onclick="console.log('grandparent clicked')">
  <div id="parent" onclick="console.log('parent clicked')">
    <div id="child" onclick="console.log('child clicked')">
      点击我
    </div>
  </div>
</div>
Copier après la connexion

Lorsque nous cliquons sur l'élément div avec "id as child", l'événement déclenchera d'abord "enfant cliqué", puis continuera à remonter jusqu'au "parent". ", déclenchant "le parent a cliqué", et enfin des bulles vers l'élément "grand-parent", déclenchant le "grand-parent cliqué".

2. Exemple de code
Ce qui suit est un exemple de code spécifique qui démontre le processus de bouillonnement d'événements :

<div id="grandparent" onclick="console.log('grandparent clicked')">
  <div id="parent" onclick="console.log('parent clicked')">
    <div id="child" onclick="console.log('child clicked')">
      点击我
    </div>
  </div>
</div>

<script>
  // 获取DOM元素
  var grandparent = document.getElementById('grandparent');
  var parent = document.getElementById('parent');
  var child = document.getElementById('child');

  // 给child元素绑定事件监听器
  child.addEventListener('click', function(event) {
    console.log('child clicked');
    event.stopPropagation(); // 阻止事件继续向上级元素冒泡
  });

  // 给parent元素绑定事件监听器
  parent.addEventListener('click', function(event) {
    console.log('parent clicked');
    event.stopPropagation(); // 阻止事件继续向上级元素冒泡
  });

  // 给grandparent元素绑定事件监听器
  grandparent.addEventListener('click', function(event) {
    console.log('grandparent clicked');
    event.stopPropagation(); // 阻止事件继续向上级元素冒泡
  });
</script>
Copier après la connexion

Dans le code ci-dessus, nous lions respectivement les trois éléments "grand-parent", "parent" et "enfant". auditeur. Lorsque l'on clique sur l'élément « enfant », « enfant cliqué », « parent cliqué » et « grand-parent cliqué » sont affichés en séquence.

De plus, nous utilisons la méthode event.stopPropagation() pour empêcher les événements de remonter jusqu'aux éléments supérieurs. Si vous n'utilisez pas cette méthode, l'événement remontera jusqu'à l'élément racine. event.stopPropagation()方法来阻止事件继续向上级元素冒泡。如果不使用该方法,事件将会一直冒泡到根元素。

三、事件代理
除了上述方式外,还可以通过事件代理的方式来处理冒泡事件。通过将事件监听器绑定到上级元素(如父元素)上,来代替给每个子元素都绑定监听器。

代码示例如下:

<div id="parent">
  <div id="child1">子元素1</div>
  <div id="child2">子元素2</div>
  <div id="child3">子元素3</div>
</div>

<script>
  // 获取parent元素
  var parent = document.getElementById('parent');

  // 通过事件代理,给parent元素绑定点击事件监听器
  parent.addEventListener('click', function(event) {
    var target = event.target;
    var id = target.id;
    console.log('子元素' + id + '被点击');
  });
</script>
Copier après la connexion

在上述代码中,我们通过事件代理的方式,给父元素"parent"绑定点击事件监听器。当点击父元素的任何子元素时,都会触发事件监听器,并通过event.target

3. Proxy d'événement

En plus des méthodes ci-dessus, les événements bouillonnants peuvent également être gérés via un proxy d'événement. En liant les écouteurs d'événements aux éléments de niveau supérieur (tels que les éléments parents), au lieu de lier les écouteurs d'événements à chaque élément enfant.

L'exemple de code est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous lions un écouteur d'événement de clic à l'élément parent "parent" via un proxy d'événement. Lorsque vous cliquez sur un élément enfant de l'élément parent, l'écouteur d'événement sera déclenché et l'élément enfant spécifique sera obtenu via event.target. Nous pouvons ensuite effectuer le traitement correspondant basé sur l'identifiant et d'autres informations de l'élément enfant. 🎜🎜Résumé🎜En comprenant profondément le principe du bouillonnement événementiel, nous pouvons mieux gérer diverses opérations événementielles. Les exemples de code fournissent des explications de principes de base et des exemples de code spécifiques, dans l'espoir d'aider à comprendre le concept et l'application du bouillonnement d'événements. Dans le même temps, le proxy d’événements est également une technique très courante qui peut réduire la redondance du code et améliorer les performances. 🎜

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Analyse de la fonction et du principe de nohup Analyse de la fonction et du principe de nohup Mar 25, 2024 pm 03:24 PM

Analyse du rôle et du principe de nohup Dans les systèmes d'exploitation Unix et de type Unix, nohup est une commande couramment utilisée pour exécuter des commandes en arrière-plan. Même si l'utilisateur quitte la session en cours ou ferme la fenêtre du terminal, la commande peut. continuent toujours à être exécutés. Dans cet article, nous analyserons en détail la fonction et le principe de la commande nohup. 1. Le rôle de nohup : Exécuter des commandes en arrière-plan : Grâce à la commande nohup, nous pouvons laisser les commandes de longue durée continuer à s'exécuter en arrière-plan sans être affectées par la sortie de l'utilisateur de la session du terminal. Cela doit être exécuté

Raisons et solutions de l'échec de jQuery .val() Raisons et solutions de l'échec de jQuery .val() Feb 20, 2024 am 09:06 AM

Titre : Raisons et solutions de l'échec de jQuery.val() Dans le développement front-end, jQuery est souvent utilisé pour faire fonctionner des éléments DOM. La méthode .val() est largement utilisée pour obtenir et définir la valeur des éléments de formulaire. Cependant, nous rencontrons parfois des situations où la méthode .val() échoue, entraînant l'incapacité d'obtenir ou de définir correctement la valeur de l'élément de formulaire. Cet article explorera les causes de l'échec de .val(), fournira les solutions correspondantes et joindra des exemples de code spécifiques. 1.Méthode d'analyse des causes.val()

Compréhension approfondie du principe d'implémentation de l'insertion par lots dans MyBatis Compréhension approfondie du principe d'implémentation de l'insertion par lots dans MyBatis Feb 21, 2024 pm 04:42 PM

MyBatis est un framework de couche de persistance Java populaire qui est largement utilisé dans divers projets Java. Parmi elles, l'insertion par lots est une opération courante qui peut améliorer efficacement les performances des opérations de base de données. Cet article explorera en profondeur le principe de mise en œuvre de l'insertion par lots dans MyBatis et l'analysera en détail avec des exemples de code spécifiques. Insertion par lots dans MyBatis Dans MyBatis, les opérations d'insertion par lots sont généralement implémentées à l'aide de SQL dynamique. En construisant un S contenant plusieurs valeurs insérées

Pourquoi le bouillonnement d'événements se déclenche-t-il deux fois ? Pourquoi le bouillonnement d'événements se déclenche-t-il deux fois ? Feb 22, 2024 am 09:06 AM

Pourquoi le bouillonnement d'événements se déclenche-t-il deux fois ? Le bouillonnement d'événement (Event Bubbling) signifie que dans le DOM, lorsqu'un élément déclenche un événement (comme un événement de clic), l'événement bouillonne de l'élément vers l'élément parent jusqu'à ce qu'il bouillonne vers l'objet document de niveau supérieur. La diffusion d'événements fait partie du modèle d'événement DOM, qui permet aux développeurs de lier des écouteurs d'événements aux éléments parents, de sorte que lorsque des éléments enfants déclenchent des événements, ceux-ci puissent être capturés et traités via le mécanisme de diffusion. Cependant, les développeurs rencontrent parfois des événements qui se déclenchent deux fois.

Une discussion approfondie sur les fonctions et les principes des outils Linux RPM Une discussion approfondie sur les fonctions et les principes des outils Linux RPM Feb 23, 2024 pm 03:00 PM

L'outil RPM (RedHatPackageManager) dans les systèmes Linux est un outil puissant pour installer, mettre à niveau, désinstaller et gérer les packages logiciels système. Il s'agit d'un outil de gestion de progiciels couramment utilisé dans les systèmes RedHatLinux et est également utilisé par de nombreuses autres distributions Linux. Le rôle de l'outil RPM est très important. Il permet aux administrateurs système et aux utilisateurs de gérer facilement les progiciels sur le système. Grâce à RPM, les utilisateurs peuvent facilement installer de nouveaux progiciels et mettre à niveau les logiciels existants.

Explication détaillée du principe du plug-in de pagination MyBatis Explication détaillée du principe du plug-in de pagination MyBatis Feb 22, 2024 pm 03:42 PM

MyBatis est un excellent framework de couche de persistance. Il prend en charge les opérations de base de données basées sur XML et les annotations. Il est simple et facile à utiliser. Il fournit également un mécanisme de plug-in riche. Parmi eux, le plug-in de pagination est l'un des plug-ins les plus fréquemment utilisés. Cet article approfondira les principes du plug-in de pagination MyBatis et l'illustrera avec des exemples de code spécifiques. 1. Principe du plug-in de pagination MyBatis lui-même ne fournit pas de fonction de pagination native, mais vous pouvez utiliser des plug-ins pour implémenter des requêtes de pagination. Le principe du plug-in de pagination est principalement d'intercepter MyBatis

Pourquoi l'événement click dans js ne peut-il pas être exécuté à plusieurs reprises ? Pourquoi l'événement click dans js ne peut-il pas être exécuté à plusieurs reprises ? May 07, 2024 pm 06:36 PM

Les événements de clic en JavaScript ne peuvent pas être exécutés à plusieurs reprises en raison du mécanisme de propagation des événements. Pour résoudre ce problème, vous pouvez prendre les mesures suivantes : Utiliser la capture d'événement : Spécifiez un écouteur d'événement à déclencher avant que l'événement ne se déclenche. Remise des événements : utilisez event.stopPropagation() pour arrêter le bouillonnement des événements. Utilisez une minuterie : déclenchez à nouveau l'écouteur d'événements après un certain temps.

Une analyse approfondie des fonctions et des principes de fonctionnement de la commande Linux chage Une analyse approfondie des fonctions et des principes de fonctionnement de la commande Linux chage Feb 24, 2024 pm 03:48 PM

La commande chage dans le système Linux est une commande utilisée pour modifier la date d'expiration du mot de passe d'un compte utilisateur. Elle peut également être utilisée pour modifier la date d'utilisation la plus longue et la plus courte du compte. Cette commande joue un rôle très important dans la gestion de la sécurité des comptes utilisateur. Elle peut contrôler efficacement la période d'utilisation des mots de passe utilisateur et améliorer la sécurité du système. Comment utiliser la commande chage : La syntaxe de base de la commande chage est : chage [option] nom d'utilisateur Par exemple, pour modifier la date d'expiration du mot de passe de l'utilisateur "testuser", vous pouvez utiliser la commande suivante.

See all articles