我正在使用this小脚本创建一个带子链接的水平菜单。我有一切工作,但有一个小障碍,这是我需要在单击另一个子菜单时关闭子菜单。您可以看到我的菜单here我需要它,这样如果您单击菜单一,然后单击菜单二,则菜单中的一个子链接将消失。
这是菜单的jQuery:
$(function() {
// Dropdown toggle
$('.dropdown-toggle').click(function(){
$(this).next('.dropdown').toggle();
});
$(document).click(function(e) {
var target = e.target;
if (!$(target).is('.dropdown-toggle') && !$(target).parents().is('.dropdown-toggle')) {
$('.dropdown').hide();
}
});
});
答案 0 :(得分:0)
你可以设置每次点击都会从所有.drop-down-items中删除Class .active,然后将class active添加到被点击的项目然后.dropdown-toggle:not('。active')。hide()< / p>
答案 1 :(得分:0)
您需要添加:
$('.dropdown').css('display', 'none');
因此,在您的下一个子菜单打开之前,它会关闭当前打开的所有子菜单。 代码:
// Dropdown toggle
$('.dropdown-toggle').click(function(){
$('.dropdown').css('display', 'none'); //New code
$(this).next('.dropdown').toggle();
});
答案 2 :(得分:0)
在custom.js中,您可以更改这些内容:
// On click sub menu
$('.dropdown-toggle').click(function(){
$(this).next('.dropdown').toggle();
});
$(document).click(function(e) {
var target = e.target;
if (!$(target).is('.dropdown-toggle') && !$(target).parents().is('.dropdown-toggle')) {
$('.dropdown').hide();
}
});
使用:
//
// delegate the click event handler
//
$(document).on('click', '.dropdown-toggle', function(e) {
//
// is current submenu visible?
//
var isVisible = $(this).next('.dropdown').is(':visible');
//
// hide all submenu, not current
//
$(this).siblings('.dropdown-toggle').next('.dropdown').hide();
//
// toggle the visibility of current menu: visible <--> invisible
//
$(this).next('.dropdown').toggle(!isVisible);
});