Table des matières
Effectuez l'opération :
Réflexion :
Maison interface Web tutoriel HTML Le comportement par défaut de la balise de l'élément parent et l'interaction entre les événements de clic

Le comportement par défaut de la balise de l'élément parent et l'interaction entre les événements de clic

Aug 08, 2018 pm 02:28 PM
html javascript

Le contenu de cet article concerne l'influence entre le comportement par défaut href de l'élément parent d'une balise et la réponse de l'événement click lié à l'élément enfant. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. , j'espère que cela vous aidera.

J'ai rencontré un problème lors du processus de développement. J'ai simplement écrit une démo. L'environnement d'exécution est Chrome 68.

Décrivez ce problème lorsqu'il y a une imbrication dans la balise a, la valeur par défaut. comportement de l'élément parent une balise Il y a un impact sur la réponse à l'événement click lié à l'élément enfant. Structure de la page :

nbsp;html>



    <meta>
    <meta>
    <meta>
    <title>a标签内部点击事件失效</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .father {
            display: block;
            width: 500px;
            height: 200px;
            background-color: rgb(210, 111, 30);
        }

        .child-one {
            display: block;
            width: 200px;
            height: 50px;
            background-color: rgb(174, 43, 226);
        }

        .child-two {
            display: block;
            width: 200px;
            height: 50px;
            background-color: rgb(43, 226, 67);
        }

        .child-three {
            display: block;
            width: 200px;
            height: 50px;
            background-color: rgb(43, 137, 226);
        }
    </style>



    <a>父标签
        <span>
            子标签1
        </span>
        <object>
            <a>
                子标签2
            </a>
        </object>
        <object>
            <a>
                子标签3
            </a>
        </object>
    </a>
    <script>    
        let father = document.querySelector(&#39;.father&#39;);
        let ele1 = document.querySelector(&#39;.child-one&#39;);
        let ele2 = document.querySelector(&#39;.child-two&#39;);
        let ele3 = document.querySelector(&#39;.child-three&#39;);

        ele1.addEventListener(&#39;click&#39;, function (e) {
            e.stopPropagation();
            // e.preventDefault();
            alert(&#39;click child-one&#39;)
            window.location.href = &#39;child-one&#39;
        }, false)

        ele2.addEventListener(&#39;click&#39;, function (e) {
            e.stopPropagation();
            alert(&#39;click child-two&#39;)
            // window.location.href=&#39;child-two&#39;
        }, false)

        ele3.addEventListener(&#39;click&#39;, function (e) {
            alert(&#39;click child-three&#39;)
            window.location.href = &#39;child-three&#39;
        }, false)

        father.addEventListener(&#39;click&#39;, function (e) {
            alert(&#39;click father&#39;)
            window.location.href = &#39;father&#39;
        }, false)

    </script>


Copier après la connexion

L'exemple est le suivant (si la balise a est imbriquée, le navigateur l'analysera de manière incorrecte, elle est donc enveloppée avec une balise d'objet).

Le comportement par défaut de la balise <a> de lélément parent et linteraction entre les événements de clic

Effectuez l'opération :

  1. Lorsque l'on clique sur la balise parent, 111 apparaît en premier, et puis passe au parent Le lien href de la balise.
    Indique que onclick est exécuté avant href

  2. Lorsque l'enfant-un est cliqué, l'événement de clic lié à l'élément est exécuté et une alerte apparaîtra, mais l'emplacement saute toujours au père.
    Après avoir évité le bouillonnement, les résultats d'exécution ne répondent toujours pas aux attentes. Après avoir ajouté preventDefault, le propre saut de l'élément enfant est effectué.

  3. Lorsque l'enfant-deux est cliqué, un message de réponse apparaîtra et le lien href sautera.

  4. Lorsque l'enfant-trois est cliqué, click child-three apparaît en premier, puis href child-three, indiquant que l'événement de clic est exécuté avant le href.

Les quatre opérations ci-dessus sont toutes faciles à comprendre sauf 2. En 2, pourquoi le saut de href dans l'élément parent est-il toujours exécuté après avoir empêché l'événement de bouillonner ?

Réflexion :

Tout d'abord, il est certain que le bouillonnement d'événements est bien bloqué car le onclick de l'élément parent n'est pas exécuté.
Donc, je suppose que le comportement par défaut de la balise ne peut pas être empêché en annulant le bouillonnement. Même si l'événement ne remonte pas jusqu'à l'élément parent, l'élément enfant s'exécutera toujours <a></a> à l'intérieur du balise de l'élément parent. Comportement par défaut de l'étiquette. <a></a>

Solution :

Ajoutez

dans l'élément enfant pour empêcher le comportement par défaute.preventDefault()

L'élément parent n'utilise pas la balise

, utilisez d'autres balises pour lier les événements de clic et l'enfant L'élément empêche le bouillonnement <a></a>

L'élément parent n'utilise pas l'attribut

et lie l'événement de clic directement à la balise href <a></a>

Articles connexes recommandés :

lien Quelle est la différence entre le lien balisé CSS et le chargement @import ?

Balise HTML : Résumé de l'utilisation de la balise img

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)

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Espace réservé d'entrée HTML Espace réservé d'entrée HTML Sep 04, 2024 pm 04:54 PM

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.

See all articles