Jquery 如何隐藏Twitter引导下拉列表
这让人恼火——当我在引导下拉列表中单击某个项目时,下拉列表不会关闭。我已经设置好在单击下拉项时打开一个Facebox lightbox,但它有一个问题Jquery 如何隐藏Twitter引导下拉列表,jquery,twitter-bootstrap,Jquery,Twitter Bootstrap,这让人恼火——当我在引导下拉列表中单击某个项目时,下拉列表不会关闭。我已经设置好在单击下拉项时打开一个Facebox lightbox,但它有一个问题 我试过的 单击项目时,我尝试执行以下操作: $('.dropdown.open').removeClass('open'); $('.dropdown-menu').hide(); 这会隐藏它,但由于某种原因,它不会再次打开 正如您所见,我确实需要关闭下拉列表,因为它保持打开状态时看起来很糟糕(主要是因为下拉列表的z-ind
我试过的 单击项目时,我尝试执行以下操作:
$('.dropdown.open').removeClass('open');
$('.dropdown-menu').hide();
这会隐藏它,但由于某种原因,它不会再次打开
正如您所见,我确实需要关闭下拉列表,因为它保持打开状态时看起来很糟糕(主要是因为下拉列表的z-index
高于Facebox模式框覆盖
为什么我不使用Bootstrap的内置模式框 如果您想知道我为什么不使用Bootstrap内置的美观的模态框,那是因为:
$.Facebox({ajax:'/assets/ajax/dialogs/dialog?type=block user&id=1234567'});
$('.dropdown.open .dropdown-toggle').dropdown('toggle');
这可能也适用于您:
$('[data-toggle="dropdown"]').parent().removeClass('open');
尝试使用引导模式打开HTML,我使用以下代码:
$(function() {
$('a[data-toggle=modal]').click(function(e) {
e.preventDefault();
var page = $(e.target).attr('href');
var url = page.replace('#','');
$(page).on('show', function () {
$.ajax({
url: "/path_to/"+url+".php/html/...",
cache: false,
success: function(obj){
$(page).css('z-index', '1999');
$(page).html(obj);
}
});
})
});
});
链接是这样的:
<a href="#my_page" data-toggle="modal">PAGE</a>
这对我很有效,我有一个导航栏和几个下拉菜单
$(document).ready(function () {
$('a.dropdown-toggle').each(function(){
$(this).on("click", function () {
$('li.dropdown').each(function () {
$(this).removeClass('open');
});
});
});
});
为什么要使用我的方法,因为如果用户离开div,这个方法允许用户在子菜单消失之前有一定的延迟,就像使用superfish插件一样 1) 首先下载hover-intent javascript 2) 这是我要执行的代码
$(document).ready(function(){
var config = {
over: showBootrapSubmenu,
timeout: 500,
out: hideBootrapSubmenu
};
function showBootrapSubmenu(){
$(this).addClass('open');
}
function hideBootrapSubmenu(){
$(this).removeClass('open');
}
//Hover intent for Submenus
$(".dropdown").hoverIntent(config);
});
选择的答案对我不起作用,但我认为这是因为Bootstrap的更新版本。我最后写了这样一篇文章:
$('.btn-navbar').addClass('collapsed');
$('.nav-collapse').removeClass('in').css('height', '0');
希望这对将来的其他人有帮助。您只需要执行
$('.dropdown.open')。removeClass('open')代码>删除隐藏下拉菜单的第二行。尝试了这里的大多数选项,但没有一个真正适合我。($('.dropdown.open').removeClass('open');
确实隐藏了它,但是如果在单击任何其他内容之前将鼠标移到上面,它会再次显示
因此,我用$(“body”)。触发器(“click”)
以下是我关于如何关闭按钮下拉列表并切换按钮的解决方案:
$(".btn-group.open", this)
.trigger("click")
.children("a.dropdown-toggle")
.trigger("blur")
其中“this”是按钮组的全局容器。最简单的方法是:添加隐藏标签:
<label class="hide_dropdown" display='hide'></label>
不知道这是否对任何人都有帮助(也许这对我的情况来说太具体了,而不是这个问题),但对我来说,这很有效:
$('.input-group.open').removeClass('open');
Bootstrap 4(2018年10月):
通过在锚定标记中添加属性data toggle=“dropdown”,无需编写JavaScript代码即可完成此操作,如下所示:
下拉列表
单击后:
// Hide mobile menu
$('.in,.open').removeClass('in open');
// Hide dropdown
$('.dropdown-menu').css('display','none');
setTimeout(function(){
$('.dropdown-menu').css('display','');
},100);
在锚定标记上使用class=“dropdown toggle”,然后当您单击锚定标记时,它将关闭引导下拉列表。这就是我的工作原理:
$(this).closest(".dropdown").find(".dropdown-toggle").dropdown("toggle");
嘿,这个简单的jQuery技巧应该会有所帮助
$(".dropdown li a").click(function(){
$(".dropdown").removeClass("open");
});
阅读文档并使用JavaScript可以使用切换方法完成:
$('.button-class').on('click',function(e) {
e.preventDefault();
$('.dropdown-class').dropdown('toggle');
}
您可以在以下网站上阅读:试试这个
.removeClass("open").trigger("hide.bs.dropdown").trigger("hidden.bs.dropdown");
或
它总是对我有用。最简单的方式:
$('.navbar-collapse a').click(function(){
$('.navbar-toggle').trigger('click')
})
您可以在当前事件处理程序中使用此代码
$('.in,.open').removeClass('in open');
在我的场景中,我在ajax调用完成时使用
jQuery(document).on('click', ".woocommerce-mini-cart__buttons .wc-forward.checkout", function() {
var _this = jQuery(this);
ajax_call(_this.attr("data-ajax-href"), "checkout-detail");
$('.in,.open').removeClass('in open');
return false;
});
引导程序4.1:
$(".dropdown-link").closest(".dropdown-menu").removeClass('show');
按属性选择是一种缓慢的方式。以下是隐藏打开的下拉列表的最快解决方案:
$(".dropdown-menu.show").parent().dropdown("toggle");
或者,如果.dropdown菜单不是下一个子元素(查找最近的父下拉控件),请使用以下命令:
它可能是在retrospect中添加的(不过,即使在Bootstrap 4.3.1中,该功能也没有添加),但您只需使用hide
参数调用它即可。只需确保在toggler元素上调用它即可。如下所示:
$('.dropdown-toggle').dropdown('hide');
// or
$('[data-toggle="dropdown"]').dropdown('hide');
当然,这也与show
相反。我添加了另一种可能适用于您的方法。如果不适用,请仔细检查保存按钮的div.btn-group元素是否分配了类“open”。.dropdown('toggle'))
关闭下拉列表,但也禁止它再次打开!我不知道这有什么用!当我使用.dropdown('toggle')时,附加到下拉列表中项目的其他单击处理程序停止工作。当我使用.parent().removeClass('open')时,我没有这个问题方法:删除open
类是可行的,但它不会更新aria expanded
。如果可能,最好使用API。$('.dropdown.open.dropdown toggle')。dropdown('toggle');
将在独立的下拉按钮上工作,使它也适用于可以执行的下拉按钮和按钮组$('.open>.dropdown toggle')。dropdown('toggle');
这也是一种很好的方法!因此,当您实际单击
时,它会关闭下拉列表?是的,下拉列表列出了菜单外用户的单击事件。:)@VeXii是的,这就是它没有关闭移动设备的原因。希望新的引导版本3(“移动优先”)修复了这个问题。没有任何缺陷。谢谢你的回答。我相信我仍然使用Bootstrap 2.2。但这不会改变aria属性。这是对我来说最简单和最相关的答案。解释得很好。感谢国王!对我来说最好的事情!Tnx!我认为这确实是最简单的解决方案,除了Bootstrap 4你使用类“show”。
$('.in,.open').removeClass('in open');
jQuery(document).on('click', ".woocommerce-mini-cart__buttons .wc-forward.checkout", function() {
var _this = jQuery(this);
ajax_call(_this.attr("data-ajax-href"), "checkout-detail");
$('.in,.open').removeClass('in open');
return false;
});
$(".dropdown-link").closest(".dropdown-menu").removeClass('show');
$(".dropdown-menu.show").parent().dropdown("toggle");
$(".dropdown-menu.show").closest(".dropdown").dropdown("toggle");
$('.dropdown-toggle').dropdown('hide');
// or
$('[data-toggle="dropdown"]').dropdown('hide');