Près de Bootstrap Déroulant après cliquez sur le lien
J'ai un bootstrap menu déroulant ci-dessous. Il a un lien dans il est branché à un knockout.js de liaison, qui renvoie faux car je ne veux pas l' # tag à envoyer à l'adresse url du navigateur. Mais cela ne marche pas fermer le menu déroulant lorsque je clique sur le lien. De toute façon cela?
HTML
<div class="btn-group">
<button class="btn dropdown-toggle" data-toggle="dropdown" data-bind="enable: !noResults()"><i class="icon-download-alt" ></i> Export <span class="icon-caret-down"></span></button>
<ul class="dropdown-menu">
@foreach(var exportUrl in Model.ExportUrls)
{
<li>
<a href="#" data-bind="disable: noResults(), download: { url: '@exportUrl.Value', data: data }"><img src="/Content/less/images/img/@(exportUrl.Key.ToString().ToLower()).png" alt="@exportUrl.Key.GetDisplayName()"/> @exportUrl.Key.GetDisplayName()</a>
</li>
}
</ul>
</div>
knockut.js la liaison
ko.bindingHandlers.download = {
init: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
id = 'download-iframe-container',
iframe;
$(element).unbind('click').bind('click', function () {
iframe = document.getElementById(id);
if (!iframe) {
iframe = document.createElement("iframe");
iframe.id = id;
iframe.style.display = "none";
}
if (value.data) {
iframe.src = value.url + (value.url.indexOf('?') > 0 ? '&' : '?') + $.param(ko.mapping.toJS(value.data));
} else {
iframe.src = value.url;
}
document.body.appendChild(iframe);
return false;
});
}
};
InformationsquelleAutor Mike Flynn | 2013-09-17
Vous devez vous connecter pour publier un commentaire.
Donner vos liens une classe (par exemple téléchargement):
Et votre déroulant un id (par exemple, dlDropDown):
Puis ajouter le gestionnaire d'événement suivant:
Ce sera effectivement travailler avec votre bootstrap balisage sans avoir à ajouter de nouvelles classes ou id. Espérons que cela est utile à quelqu'un d'autre tout simplement à la recherche à goutte une solution sans changer quoi que ce soit existant.
$(this).closest(".dropdown").find("[data-toggle='dropdown']").dropdown("toggle");
Ceci peut être réalisé avec des bottes propres de la classe CSS
dropdown-toggle
Juste à ajouter que la classe de votre lien éléments comme:
<a class='dropdown-toggle'></a>
et il permet de basculer entre la liste déroulante.data-toggle
attribut, l'identification de la liste déroulante doit être spécifié -<a class='dropdown-toggle' data-toggle='dropdown-role-name'></a>
Je pense que ce sera fermer toutes les listes déroulantes et élargi navmenus sur la page:
$(".modal").on("show.bs.modal", function() { $(".dropdown.in,.dropdown.open").removeClass("in open"); });
À l'aide de
event.preventDefault()
au lieu dereturn false
fait le tour.Modifier votre code pour:
J'ai malheureusement eu aucun succès à l'aide de
.dropdown('toggle')
comme suggéré ci-dessus...Ce n'travail a été cependant l'application de bootstrap du bouton de la liste déroulante de données des attributs propres déroulant liens:
...
Que je n'ai fait ajouter le
data-toggle="collapse"
etdata-target=".navbar-collapse"
à chaque liste déroulante nav lien.Aucune autre css ou js et cela a fonctionné comme un charme 🙂
Il suffit de modifier le
href="#"
àhref="javscript:void(0);"
et puisreturn true
dans votre événement click (au lieu defalse
).Si vous avez un événement paramètre viens de faire:
Une solution de nettoyage, de garder la liste déroulante de la fonctionnalité et obtenir ce que vous cherchez.
la meilleure réponse est à effectuer sur donc il va agir de la même que l'utilisateur clique sur la souris pour cacher le menu déroulant, pour ce faire ajouter ce composant logiciel enfichable code dans votre page:
vous pouvez également ajouter un masque transparent pour bloquer toutes les autres indésirables, cliquez sur lorsque déroulante est ouverte:
avec le masque: