点击一次展开的javascript手风琴菜单,点击两次即可链接

时间:2011-07-13 09:03:52

标签: javascript jquery accordion

我试图让手风琴菜单按照我喜欢的方式行事,并且它不会回应我对合规性的声音请求。

我希望按照以下规则行事:

如果没有子菜单,请转到已设置的链接。

如果有子菜单,请将其展开,然后设置下一步。

如果 IS 一个子菜单,并且 HAS 已展开,则点击该标题将转到相应的链接。

手风琴部分工作正常,但'一旦展开,再点击'链接部分则没有。任何提示和/或指示都将非常受欢迎。

我正在使用的代码如下。

function initMenus() {
    $('ul#treeview ul').hide();
    $.each($('ul#treeview'), function(){
        $('#' + this.id + '.expandfirst ul:first').show();
    });
    $('ul#treeview li a').click(
        function() {
            var checkElement = $(this).next();
            var parent = this.parentNode.parentNode.id;
                if($('#' + parent).hasClass('noaccordion')) {
                    $(this).next().slideToggle('normal');
                    return false;
                }
                if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
                    if($('#' + parent).hasClass('collapsible')) {
                        $('#' + parent + ' ul:visible').slideUp('normal');
                    }
                    return false;
                }
            if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
                $('#' + parent + ' ul:visible').slideUp('normal');
                checkElement.slideDown('normal');
                return false;
            }
        }
    );
}
$(document).ready(function() {initMenus();});

1 个答案:

答案 0 :(得分:1)

确保您的点击事件到达该功能的结尾,并且在没有要展开的子项时不返回false。返回false会阻止href被访问。