Détecter cliquez à l'intérieur/à l'extérieur de l'élément avec un seul gestionnaire d'événements
Supposons que j'ai un div dans ma page. comment détecter le clic de l'utilisateur sur les div de contenu ou à l'extérieur de la div de contenu à l'aide de JavaScript ou JQuery. s'il vous plaît aider avec petit extrait de code.
merci.
Modifier: Comme le faisait remarquer dans l'une des réponses ci-dessous, je ne veux associer un gestionnaire d'événement à mon corps, et vous voulez également savoir quel élément est cliqué sur.
Vous devez vous connecter pour publier un commentaire.
En JavaScript (via jQuery):
JS:
CSS:
HTML:
"outside div"
.parents()
m'a inspiré pour mettre à jour ma réponse à utiliser plus de jQuery et moins de la vieille école de la traversée.$(e.target).parents("#myDiv").length
, je peux mémoriser que les autres codes que j'ai trouvé étaient beaucoup plus complexe et n'a même pas fonctionner correctement, merci beaucoup!Voici un une ligne qui ne nécessite pas de jquery en utilisant Nœud.contient:
Si vous vous posez des questions sur le cas limite de vérifier si le clic est sur l'élément lui-même, Nœud.contient renvoie la valeur true pour l'élément lui-même (par exemple,
element.contains(element) === true
) donc cet extrait devrait toujours fonctionner.Prise en charge du navigateur semble couvrir à peu près tout selon que le MDN page.
contains
qui obtient le upvoteÀ l'aide de jQuery, et en supposant que vous avez
<div id="foo">
:Modifier: Pour un seul gestionnaire:
stopPropagation
l'empêche de bulles. Vous pouvez le tester par vous-même ici: jsfiddle.net/Qh2MNclickedOn.is('#foo')
correspond à true.Plutôt que d'utiliser le jQuery
.parents
fonction (comme suggéré dans l'acceptation de réponse), il est préférable d'utiliser.closest
à cette fin. Comme expliqué dans les docs de l'api jQuery,.closest
vérification de l'élément passé et tous ses parents, alors que.parents
vérifie juste les parents.Par conséquent, cela fonctionne:
Quoi à ce sujet?
(à partir de http://bytes.com/topic/javascript/answers/151689-detect-click-inside-div-mozilla l'aide de Google.)
Cette question peut être répondue avec les coordonnées X et Y et sans JQuery:
Pour bootstrap 4 cela fonctionne pour moi.
de travail de démonstration sur jsfiddle lien:
https://jsfiddle.net/LabibMuhammadJamal/jys10nez/9/
De vanille dans du javaScript dans ES6
JS:
CSS:
HTML:
Si vous souhaitez ajouter un écouteur de clics dans google chrome, console, utilisez ce
Au lieu d'utiliser le corps, vous pouvez créer un rideau avec
z-index
de 100 (pour choisir un numéro) et donnent à l'intérieur de l'élément supérieurz-index
alors que tous les autres éléments ont une plus faible z-index que le rideau.Voir exemple ici: http://jsfiddle.net/Flandre/6JvFk/
jQuery:
CSS: