javascript - 单击其中的元素时如何切换侧边栏?

标签 javascript jquery html css twitter-bootstrap-3

我有以下侧导航栏:http://bootsnipp.com/snippets/featured/fancy-sidebar-navigation

一切正常,我在我的网站上实现了,但我希望当您单击列表元素时,侧导航栏关闭,我的想法是添加一个 id="link-item" 和添加到 js 文件中,当您单击元素时,侧导航栏将关闭。我尝试这样做:

第一次尝试:

$('#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');
  });
});

第二次尝试:

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

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

最佳答案

您可以简单地让触发器在 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');
  });  
});
<小时/>

我认为这是一个糟糕的实现。这满足了您所需要的一切:

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

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

关于javascript - 单击其中的元素时如何切换侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41778837/

相关文章:

javascript - 如何在jquery函数中找到引用的对象

jquery .load 与 python flask

ruby-on-rails - js.erb 文件中的 if 语句基于 param_name will_paginate (Ajax 调用)

javascript - 从html输入文本框内按回车键时如何防止回发?

html - 为什么 google chrome 的 div 会崩溃

javascript - 我的函数调用不起作用?

javascript - 什么是用于触摸手势的优秀 JavaScript 库或 jQuery 插件?

javascript - 在 CSS 或 javascript 中更改 div 顺序

javascript - jqGrid设置内联编辑输入框的属性

python - 使用django时无法获取html链接