简体   繁体   English

如何在单击元素时切换侧边栏?

[英]How to toggle sidebar when you click on element of them?

I have the following sidenavbar: http://bootsnipp.com/snippets/featured/fancy-sidebar-navigation 我有以下sidenavbar: http ://bootsnipp.com/snippets/featured/fancy-sidebar-navigation

All works fine, I implemented to my website, but I want when you click on element of list, the sidenavbar to close, my idea was to add an id="link-item" and to add in js file when you click on element the sidenavbar will close. 一切正常,我实现到我的网站,但我想当你点击列表的元素,sidenavbar关闭,我的想法是添加一个id="link-item"并在你单击元素时添加js文件sidenavbar将关闭。 My try to make this: 我尝试做到这一点:

First Try: 第一次尝试:

$('#link-item').click(function () {
  var trigger = $('.hamburger'),
      overlay = $('.overlay'),
      isClosed = false;

  $('#link-item').click(function () {
    hamburger_cross();
  });

  function hamburger_cross() {

    if (isClosed == true) {
      overlay.hide();
      trigger.removeClass('is-open');
      trigger.addClass('is-closed');
      isClosed = false;
    } else {
      overlay.show();
      trigger.removeClass('is-closed');
      trigger.addClass('is-open');
      isClosed = true;
    }
  }

  $('[data-toggle="offcanvas"]').click(function () {
      $('#wrapper').toggleClass('toggled');
  });
});

Second Try: 第二次尝试:

trigger.click(function () {
  hamburger_cross();      
});

$('#link-item').click(function () {
  hamburger_cross();      
});

Use in list item data-toggle="offcanvas" just like 在列表项data-toggle="offcanvas"就像

<li>
   <a id="id" data-toggle="offcanvas" href="#">Home</a>
</li>


var trigger = $('.hamburger, #id')

You can simply let the trigger run on the nav .sidebar-nav li elements like this: 您可以简单地让触发器在nav .sidebar-nav li元素上运行,如下所示:

$(document).ready(function () {
  var trigger = $('.hamburger, nav .sidebar-nav li'),
      overlay = $('.overlay'),
     isClosed = false;

    trigger.click(function () {
      hamburger_cross();      
    });

    function hamburger_cross() {

      if (isClosed == true) {          
        overlay.hide();
        trigger.removeClass('is-open');
        trigger.addClass('is-closed');
        isClosed = false;
      } else {   
        overlay.show();
        trigger.removeClass('is-closed');
        trigger.addClass('is-open');
        isClosed = true;
      }
  }

  $('[data-toggle="offcanvas"], nav .sidebar-nav li').click(function () {
        $('#wrapper').toggleClass('toggled');
  });  
});

I think it is a poor implementation though. 我认为这是一个糟糕的实现。 This does all you need: 这就是您所需要的:

$(document).ready(function () {
    var trigger = $('.hamburger, nav .sidebar-nav li');

    trigger.click(function () {
        $('.overlay').toggle();
        trigger.toggleClass('is-open is-closed');
        $('#wrapper').toggleClass('toggled');
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM