Bootstrap - 同时切换导航和手风琴面板

时间:2015-08-18 18:36:15

标签: javascript jquery html css twitter-bootstrap

我想要一个菜单​​按钮,只需点击一下即可同时打开自定义slide-in导航和特定bootstrap accordion面板(导航内)。我有滑入式菜单和手风琴独立工作。 button当前打开菜单,但无法弄清楚如何扩展菜单。理想情况下,我希望在菜单打开后面板打开时会有轻微的delay

请查看此working JSFIDDLE了解详情

谢谢!

jQuery(document).ready(function($) {
    var open = false;
    var openSidebar = function() {
        $('.menu--slide-right').addClass('is-active');
        $('.toggle-menu').addClass('is-active');
        $('#toggle-menu').addClass('toggle-close');
        open = true;
    }
    var closeSidebar = function() {
        $('.menu--slide-right').removeClass('is-active');
        $('.toggle-menu').removeClass('is-active');
        $('#toggle-menu').removeClass('toggle-close');
        open = false;
    }
    $('.toggle-menu').click(function(event) {
        event.stopPropagation();
        var toggle = open ? closeSidebar : openSidebar;
        toggle();
    });
    $(document).click(function(event) {
        if (!$(event.target).closest('.menu--slide-right').length) {
            closeSidebar();
        }
    });
});
<header class="navbar nav-main navbar-fixed-top" role="banner">
    <ul class="nav nav--right">
        <li class="v-button--slide-right" id="toggle-menu">
            <button class="mpp-menu-icon mpp-menu-icon--cross toggle-menu">
                <span class="toggle"></span>
                <span class="menu">menu</span>
            </button>
        </li>
    </ul>
    <nav id="menu--slide-right" class="nav menu--slide-right">
        <ul class="main-menu">
            <li><a href="http://mpp.viabli.com/">Home</a></li>
            <ul aria-multiselectable="true" role="tablist" id="accordion" class="panel-group">
                <li class="panel">
                    <a aria-controls="dropdown-menu--resources" aria-expanded="false" data-target="#dropdown-menu--resources" data-parent="#accordion" data-toggle="collapse">Resources <span class="expand-icon fa fa-angle-down"></span></a>
                    <div aria-labelledby="headingOne" role="tabpanel" class="panel-collapse collapse" id="dropdown-menu--resources">
                        <ul class="v-dropdown-menu">
                            <li><a href="http://mpp.viabli.com/resources/blog/"><span class="link-icon fa fa-angle-right"></span> Blog</a></li>
                            <li><a href="http://mpp.viabli.com/resources/faq/"><span class="link-icon fa fa-angle-right"></span> FAQ</a></li>
                            <li><a href="http://mpp.viabli.com/resources/glossary/"><span class="link-icon fa fa-angle-right"></span> Glossary</a></li>
                            <li><a href="http://mpp.viabli.com/resources/shipping-info/"><span class="link-icon fa fa-angle-right"></span> Shipping info</a></li>
                        </ul>
                    </div>
                </li>
            </ul>
            <!-- end panel-group -->
            <li><a href="http://mpp.viabli.com/capabilities/">Capabilities</a></li>
            <li><a href="http://mpp.viabli.com/contact/">Contact</a></li>
        </ul>
    </nav>
</header>

2 个答案:

答案 0 :(得分:0)

使用incollapse

var openSidebar = function(){
    ...
    $('#dropdown-menu--resources').addClass('in');
    open = true;
}
var closeSidebar = function(){
    ...
    $('#dropdown-menu--resources').removeClass('collapse');
    open = false;
}

答案 1 :(得分:0)

试试这个

在openSidebar中添加了$(".collapse").collapse('show');,在closeSidebar中添加了$(".collapse").collapse('hide');

var openSidebar = function(){
$('.menu--slide-right').addClass('is-active');
$('.toggle-menu').addClass('is-active');
$('#toggle-menu').addClass('toggle-close');
$(".collapse").collapse('show');
open = true;
}

var closeSidebar = function(){
$('.menu--slide-right').removeClass('is-active');
$('.toggle-menu').removeClass('is-active');
$('#toggle-menu').removeClass('toggle-close');
$(".collapse").collapse('hide');
open = false;
}