Javascript Détecte un événement de clic en dehors de div
J'ai un div avec id="contenu de la zone", lorsqu'un utilisateur clique en dehors de cette div, je tiens à les alerter sur le fait qu'ils ont cliqué sur l'extérieur. Comment puis-je utiliser JavaScript pour résoudre ce problème?
<div id = "outer-container">
<div id = "content-area">
Display Conents
</div>
</div>
source d'informationauteur Dibish | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
En pure Javascript
Découvrez ce violon et voir si c'est ce que vous êtes après!
http://jsfiddle.net/DUhP6/2/
Lier l'Événement onClick d'un élément qui est à l'extérieur de votre zone de contenu, par exemple le corps. Puis, à l'intérieur de l'événement, vérifiez si la cible est la zone de contenu ou, directe ou indirecte, de l'enfant de la zone de contenu. Si non, alors l'alerte.
J'ai fait une fonction qui vérifie si c'est un enfant ou pas. Elle renvoie true si le parent d'un nœud est la recherche d'un parent. Si non, alors elle vérifie si elle a effectivement un parent. Si non, alors elle retourne false. S'il a un parent, mais ce n'est pas la recherche, qu'il vérifie si le parent du parent est à la recherche d'un parent.
Aussi consulter les Live Exemple (contenu de la zone = gris)!
La Nœud.contient du (de la) méthode renvoie une valeur Booléenne indiquant si un nœud est un descendant d'un nœud donné ou pas
Vous pouvez capturer des événements à l'aide de
N'oubliez pas de supprimer l'événement écouté au bon endroit
J'ai fait un simple et petit bibliothèque js de le faire pour vous:
Il détourne le natif de la méthode addEventListener, pour créer un outclick événement et dispose également d'un setter sur le prototype .onoutclick
Amusez-vous!
Utilisation
document.activeElement
de voir qui de vos éléments html est active.Ici est une référence:
document.activeElement dans MDN
C'est pour le cas que vous cliquez à l'intérieur de la extérieur-conteneur mais à l'extérieur de la contenu de la zone.
Ici est le violon : http://jsfiddle.net/uQAMm/1/
utiliser jquery comme de son mieux pour le DOM accès
Mettre ceci dans votre document: