Bootstrap左侧边栏切换菜单

时间:2016-08-04 10:37:46

标签: jquery twitter-bootstrap sidebar

我有一个Bootstrap侧边栏切换菜单的脚本。它可以满足我的需求。

现在菜单正在使用切换菜单按钮切换,这很好。但是如果我点击它,我需要关闭菜单。

请检查 this Fiddle

并帮助我。感谢。

$("#menu-toggle").click(function(e) {
     e.preventDefault();
     $("#wrapper").toggleClass("toggled");
});

2 个答案:

答案 0 :(得分:3)

要获得这个,你必须使用jquery函数,如.hasClass.trigger.is等。我做的是,我检查了点击的类,然后根据他们我写了这段代码。请检查

请参阅demo

详细说明:首先,我检查点击a href时正在切换的课程,这样我就知道如果#wrapper已切换课程,那么我们会在#menu-toggle上触发点击事件但是我们也要小心点击应该在正文上,而不是侧栏菜单的href,这就是为什么我用!标签添加了另一个条件。希望你能理解,如果没有,请告诉我。

答案 1 :(得分:1)

添加一个窗口事件以检查您要点击的位置,

这是一个snnipet:

$("#menu-toggle").click(function(e) {
   e.preventDefault();
   $("#wrapper").toggleClass("toggled");
});

$(window).click(function(e) {
   e.preventDefault();
   if(e.target.id =="menu-toggle") return;
               
   if($(e.target).closest('#sidebar-wrapper').length==0){
        // small device toogled class added auto so remove it
        if($("#wrapper").width() < 768 )
           $("#wrapper").removeClass("toggled");
        else
           $("#wrapper").addClass("toggled");
   }  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://blackrockdigital.github.io/startbootstrap-simple-sidebar/js/bootstrap.min.js"></script>
<link href="https://blackrockdigital.github.io/startbootstrap-simple-sidebar/css/simple-sidebar.css" rel="stylesheet"/>
<link href="https://blackrockdigital.github.io/startbootstrap-simple-sidebar/css/bootstrap.min.css" rel="stylesheet"/>

<div id="wrapper">

        <!-- Sidebar -->
        <div id="sidebar-wrapper">
            <ul class="sidebar-nav">
                <li class="sidebar-brand">
                    <a href="#">
                        Start Bootstrap
                    </a>
                </li>
                <li>
                    <a href="#">Dashboard</a>
                </li>
                <li>
                    <a href="#">Shortcuts</a>
                </li>
                <li>
                    <a href="#">Overview</a>
                </li>
                <li>
                    <a href="#">Events</a>
                </li>
                <li>
                    <a href="#">About</a>
                </li>
                <li>
                    <a href="#">Services</a>
                </li>
                <li>
                    <a href="#">Contact</a>
                </li>
            </ul>
        </div>
        <!-- /#sidebar-wrapper -->

        <!-- Page Content -->
        <div id="page-content-wrapper">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-lg-12">
                        <h1>Simple Sidebar</h1>
                        <p>This template has a responsive menu toggling system. The menu will appear collapsed on smaller screens, and will appear non-collapsed on larger screens. When toggled using the button below, the menu will appear/disappear. On small screens, the page content will be pushed off canvas.</p>
                        <p>Make sure to keep all page content within the <code>#page-content-wrapper</code>.</p>
                        <a href="#menu-toggle" class="btn btn-default" id="menu-toggle">Toggle Menu</a>
                    </div>
                </div>
            </div>
        </div>
        <!-- /#page-content-wrapper -->

    </div>