Cela devient ennuyeux - lorsque je clique sur un élément dans une liste déroulante Bootstrap, la liste déroulante ne se ferme pas. Je l'ai configuré pour ouvrir une lightbox Facebox lorsque vous cliquez sur l'élément de liste déroulante, mais il y a un problème avec celui-ci.
Ce que j'ai essayé
Lorsque vous cliquez sur l'élément, j'ai essayé de faire ceci:
$('.dropdown.open').removeClass('open');
$('.dropdown-menu').hide();
Cela le cache, mais pour une raison quelconque, il ne s'ouvrira plus.
Comme vous pouvez le voir, j'ai vraiment besoin de la liste déroulante pour se fermer, car elle a l'air merdique quand elle reste ouverte (principalement parce que z-index
la liste déroulante est plus élevée que la superposition de la boîte modale Facebox.
Pourquoi je n'utilise pas la boîte modale intégrée de Bootstrap
Si vous vous demandez pourquoi je n'utilise pas la jolie boîte modale intégrée à Bootstrap , c'est parce que:
- Il n'a pas de moyen de charger du contenu avec AJAX.
- Vous devez taper HTML à chaque fois pour le modal; avec Facebox, vous pouvez faire un simple:
$.facebox({ajax:'/assets/ajax/dialogs/dialog?type=block-user&id=1234567'});
- Il utilise des animations CSS3 pour animer (ce qui a l'air très agréable) mais dans les navigateurs non-CSS3, cela montre juste, ce qui n'a pas l'air si beau; Facebox utilise JavaScript pour se fondre afin qu'il fonctionne dans tous les navigateurs.
la source
.dropdown('toggle')
ferme le menu déroulant mais l'empêche également de s'ouvrir à nouveau! Je ne sais pas à quoi ça sert!open
classe fonctionne, mais elle ne se met pas à jouraria-expanded
. Il vaut toujours mieux utiliser l'API lorsque cela est possible.essayé la plupart des options d'ici, mais aucune d'elles n'a vraiment fonctionné pour moi. (
$('.dropdown.open').removeClass('open');
Ils l' ont caché, mais si vous passez la souris avant de cliquer sur quoi que ce soit d'autre, il réapparaît.alors je finis par le faire avec un
$("body").trigger("click")
la source
<body>
, cela ferme le menu déroulant?Bootstrap 4 (octobre 2018):
la source
Cela peut être fait sans écrire de code JavaScript en ajoutant l'attribut data-toggle = "dropdown" dans la balise d'ancrage comme indiqué ci-dessous:
la source
Il vous suffit de
$('.dropdown.open').removeClass('open');
supprimer la deuxième ligne qui masque le menu déroulant.la source
C'est ce qui a fonctionné pour moi:
la source
La réponse sélectionnée n'a pas fonctionné pour moi, mais je pense que c'est à cause de la nouvelle version de Bootstrap. J'ai fini par écrire ceci:
J'espère que cela sera utile à quelqu'un d'autre à l'avenir.
la source
Essaye ça!
OU
Cela fonctionne toujours pour moi.
la source
Pourquoi utiliser ma méthode, car si l'utilisateur sort du div, ce metod permet à l'utilisateur un certain délai avant que les sous-menus ne disparaissent. C'est comme utiliser le plugin superfish.
1) Premier téléchargement de l'intention de survol javascript
Lien ici: hover intent javascript
2) Voici mon code à exécuter
la source
la source
La lecture de la documentation et l'utilisation de JavaScript peuvent être effectuées en utilisant la méthode toggle:
Vous pouvez en savoir plus sur: http://getbootstrap.com/javascript/#dropdowns-methods
la source
Essayez d'ouvrir le HTML avec Bootstrap Modal, j'utilise ce code:
et le lien est comme ceci:
la source
Voici ma solution pour fermer la liste déroulante du bouton et basculer le bouton:
Où "ceci" est un conteneur global du groupe de boutons.
la source
Bootstrap 4.1:
la source
cela a fonctionné pour moi, j'avais une barre de navigation et plusieurs menus déroulants.
la source
La façon la plus simple de procéder est la suivante: vous ajoutez une étiquette de masquage:
puis chaque fois que vous souhaitez masquer la liste déroulante, vous appelez:
la source
Je ne sais pas si cela aidera quelqu'un (peut-être que c'est trop spécifique à mon cas, et pas à cette question) mais pour moi, cela a fonctionné:
la source
Après clic:
la source
Utilisez class = "dropdown-toggle" sur la balise d'ancrage, puis lorsque vous cliquez sur la balise d'ancrage, cela fermera la liste déroulante de bootstrap.
la source
Hé, cette simple astuce jQuery devrait vous aider.
la source
La manière la plus simple:
la source
vous pouvez utiliser ce code dans votre gestionnaire d'événements actuel
dans mon scénario, j'ai utilisé lorsque l'appel ajax est terminé
la source
La sélection par attribut est la manière la plus lente. Voici la solution la plus rapide pour masquer la liste déroulante ouverte:
ou utilisez ce qui suit, si le .dropdown-menu n'est pas l'élément enfants suivant (recherchez le contrôle déroulant parent le plus proche):
la source
Elle a peut-être été ajoutée rétrospectivement (bien que cette fonctionnalité ne soit pas documentée , même dans Bootstrap 4.3.1), mais vous pouvez simplement l'appeler avec un
hide
paramètre. Assurez-vous simplement de l'appeler sur l'élément toggler. Ainsi:Bien sûr, cela fonctionne également en sens inverse avec
show
.la source