手风琴 Jquery Multi-menu 导航
Accordion Jquery Multi-menu nav
我正在做手风琴菜单栏,问题是当我单击没有 children 菜单的 link 时,具有 children 的 links 是仍然打开,有人可以帮助我如何修复或改进我的 jquery,我想要的是.. 如果我单击没有 child 的 link,所有手风琴都设置为关闭。
function initMenu() {
$(".sub-menu").hide();
$('#accordion1 li a').click(
function () {
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
checkElement.slideUp('normal');
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#accordion1 ul:visible').not(checkElement.parentsUntil('#accordion1')).slideUp('normal');
checkElement.slideDown('normal');
return false;
}
});
$('.current-menu-item').parentsUntil('#accordion1').slideDown('normal');
}
$(function () {
initMenu();
});
$(function () {
var selector = '.menu li';
$(selector).on('click', function () {
$(selector).removeClass('active');
$(this).addClass('active');
});
$('.menu').delegate('li', 'click', function () {
$(this).addClass('active').siblings().removeClass('active');
});
});
这里是JSFIDDLE
在顶部的点击功能中添加:
WORKING DEMO
if($(this).parent().children('ul').length<1)
{
$('#accordion1 ul:visible').not(checkElement.parentsUntil('#accordion1')).slideUp('normal');
}
编辑 1
针对您在评论中提到的问题添加以下代码:
if($(this).parents('ul').length>1 && $(this).parent().children('ul').length==0)
{
return;
}
This 是我的实现。
function initMenu() {
$(".sub-menu").hide();
$('#accordion1 li a').click(
function () {
var checkElement = $(this).next();
var allelems = $('#accordion1 li ul');
allelems.not(checkElement).slideUp('normal');
checkElement.slideDown('normal');
});
}
$(function () {
initMenu();
});
我正在做手风琴菜单栏,问题是当我单击没有 children 菜单的 link 时,具有 children 的 links 是仍然打开,有人可以帮助我如何修复或改进我的 jquery,我想要的是.. 如果我单击没有 child 的 link,所有手风琴都设置为关闭。
function initMenu() {
$(".sub-menu").hide();
$('#accordion1 li a').click(
function () {
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
checkElement.slideUp('normal');
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#accordion1 ul:visible').not(checkElement.parentsUntil('#accordion1')).slideUp('normal');
checkElement.slideDown('normal');
return false;
}
});
$('.current-menu-item').parentsUntil('#accordion1').slideDown('normal');
}
$(function () {
initMenu();
});
$(function () {
var selector = '.menu li';
$(selector).on('click', function () {
$(selector).removeClass('active');
$(this).addClass('active');
});
$('.menu').delegate('li', 'click', function () {
$(this).addClass('active').siblings().removeClass('active');
});
});
这里是JSFIDDLE
在顶部的点击功能中添加: WORKING DEMO
if($(this).parent().children('ul').length<1)
{
$('#accordion1 ul:visible').not(checkElement.parentsUntil('#accordion1')).slideUp('normal');
}
编辑 1
针对您在评论中提到的问题添加以下代码:
if($(this).parents('ul').length>1 && $(this).parent().children('ul').length==0)
{
return;
}
This 是我的实现。
function initMenu() {
$(".sub-menu").hide();
$('#accordion1 li a').click(
function () {
var checkElement = $(this).next();
var allelems = $('#accordion1 li ul');
allelems.not(checkElement).slideUp('normal');
checkElement.slideDown('normal');
});
}
$(function () {
initMenu();
});