保持手风琴菜单打开以显示所选菜单项

时间:2013-06-17 14:48:57

标签: accordion

我有一个手风琴菜单的代码(见下文)。

当我移动到页面时,如何保持当前页面菜单项显示当前菜单关闭到最高级别?

我还想知道是否可以在点击和同时打开页面时打开手风琴菜单?)

感谢任何人的帮助!

function initMenu() {
$(".sub-menu").hide();
$(".current_page_item .sub-menu").show();
$('#menu 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'))) {
        $('#menu ul:visible').not(checkElement.parentsUntil('#menu')).slideUp('normal');
        checkElement.slideDown('normal');
        return false;
    }
});

$('.current-menu-item').parentsUntil('#menu').slideDown('normal');

}
$(function() {
initMenu();
});

1 个答案:

答案 0 :(得分:0)

initMenu()函数应该如下所示:

function initMenu() {
$(".sub-menu").hide();
$(".current_page_item .sub-menu").show();
$('#menu 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'))) {
        $('#menu ul:visible').not(checkElement.parentsUntil('#menu')).slideUp('normal');
        checkElement.slideDown('normal');
        return false;
    }
});

$('.current-menu-item').parentsUntil('#menu').slideDown('normal');

var FullCurrentURL = window.location.href;
var CurrentURLparts = FullCurrentURL.split("/");
var CurrentURLindex = CurrentURLparts.length - 1;
var CurrentURL = CurrentURLparts[CurrentURLindex];

$('#menu li a').each(function () {
    var fullLinkURL = $(this).attr('href');
      var LinkURLparts = fullLinkURL.split("/");
      var LinkURLindex = LinkURLparts.length - 1;
      var LinkURL = LinkURLparts[LinkURLindex];
      if (LinkURL === CurrentURL){
        $(this).parents("li").addClass("current-menu-item");
        $(this).closest("ul").css('display', 'block');   
    }
});

}
$(function() {
initMenu();
});