Maison > interface Web > js tutoriel > Comment puis-je empêcher le déclenchement des événements de clic parent lorsque l'on clique sur des éléments enfants ?

Comment puis-je empêcher le déclenchement des événements de clic parent lorsque l'on clique sur des éléments enfants ?

Linda Hamilton
Libérer: 2024-12-18 02:06:10
original
427 Les gens l'ont consulté

How Can I Prevent Parent Click Events from Firing When Child Elements are Clicked?

Comprendre le bouillonnement d'événements dans les événements de clic imbriqués

Lorsque vous cliquez sur un élément au sein d'un élément parent qui a tous deux des écouteurs d'événements de clic, les deux événements peuvent être déclenchés. Ce comportement, connu sous le nom de bouillonnement d'événement, peut conduire à des résultats indésirables lorsque vous ne souhaitez pas que l'événement de l'élément parent se déclenche simultanément.

Dans votre scénario spécifique, vous rencontrez ce problème avec un div cliquable contenant une ancre balises. Pour le résoudre, explorons deux approches :

1. Identification cible de l'événement d'origine

Pour empêcher l'événement click du div parent de se déclencher lorsqu'un clic sur une ancre est cliqué, vérifiez l'origine de l'événement lui-même. jQuery fournit une propriété e.target dans les arguments d'événement transmis aux gestionnaires d'événements.

$("#clickable").click(function(e) {
    var senderElement = e.target;
    if($(senderElement).is("div")) {
        window.location = url;
        return true;
    }
});
Copier après la connexion

Dans cette approche, vous vérifiez si l'événement provient de l'élément div en fonction de son sélecteur. Si ce n'est pas le div, l'événement de changement window.location n'est pas déclenché.

2. Arrêt de la propagation de l'événement

Vous pouvez également empêcher la propagation de l'événement de clic pour les ancres à l'aide de la méthode e.stopPropagation() dans leur gestionnaire d'événements de clic :

$("#clickable a").click(function(e) {
    e.stopPropagation();
    // Do something specific to the anchor
});
Copier après la connexion

Avec cette approche, le L'événement click de l'ancre exécute sa propre logique sans propager l'événement à ses éléments parents, empêchant ainsi le déclenchement de l'événement click du div.

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
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