jquery menu déroulant de clôture en cliquant à l'extérieur
Je suis en train d'élaborer un simple menu déroulant avec jquery . Lorsqu'un utilisateur appuyez sur une zone de déclenchement , il permet de basculer entre la liste déroulante de la zone. Ma question est comment faire pour avoir un événement de clic en dehors de la liste déroulante du menu pour qu'il fermer le menu déroulant ?
InformationsquelleAutor user670800 | 2011-06-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez dire tout sur que les bulles tout en haut de la DOM pour masquer la liste déroulante et cliquer que le fait pour le parent de la liste déroulante pour arrêter de bulles.
Démo: http://jsbin.com/umubad/2/edit
comment avoir un événement de clic en dehors de la liste déroulante du menu pour qu'il fermer le menu déroulant ?
Heres le code
container.has(e.target).length === 0
, vérifie si la cible de l'événement est un$('.dropDown')
, et si non, de masquer lesubMenu
?Vous devez joindre à votre événement de clic sur un élément. Si il ya beaucoup d'autres éléments sur la page, vous ne voulez pas joindre un événement de clic à toutes et tous.
Un moyen potentiel serait de créer un transparent div en dessous de votre menu déroulant, mais au-dessus de tous les autres éléments sur la page. Vous la présenter lors de la chute vers le bas a été montré. Avoir de l'élément cliquez sur un virage qui cache la liste déroulante, et la transparence de la div.
JS:
CSS:
HTML:
L'arrêt de la Propagation de l'Évènement en particulier les éléments de ma y devenir dangereuse, car elle peut éviter à d'autres de certains scripts en cours d'exécution. Afin de vérifier si le déclenchement est de la zone d'exclusion à partir de l'intérieur de la fonction.
Ici la fonction est lancée en cliquant sur le document, mais il exclut le déclenchement de #menucontainer.
Pour plus de détails https://css-tricks.com/dangers-stopping-event-propagation/
Réponse sélectionnée fonctionne pour un menu déroulant seulement.
Pour plusieurs solution serait:
Un autre multiple déroulant exemple qui fonctionne https://jsfiddle.net/vgjddv6u/
JS:
HTML: