首页 > 解决方案 > 如何在单击时添加活动类并防止子菜单向上滑动

问题描述

我正在尝试添加/删除活动类并防止我的子菜单在活动时向上滑动。如果我单击特定选项卡,它应该处于活动状态,直到我切换到另一个选项卡。已尝试使用 addclass/removeclass,但 html onclick 没有变化。任何人都可以建议如何实现这一目标。

当子菜单“akun belanja”处于活动状态时

当我单击任何子菜单时,它将删除活动状态并向上滑动,如下所示:

点击'daftar akun belanja'

我的侧边栏:

<nav id="sidebar">
<div class="sidebar-header">
    <div class="p-b-13">
        <img src="{{url('/asset/login/images/itk.png')}}" alt="itk" class="center">
    </div>
    <h6 align="center">Sistem Informasi</h6>
    <h3 class="h3_sidebar" align="center" style="color:#0067B2">MANAJEMEN</h3>
</div>

<ul class="list-unstyled components">
    <li>
        <a href="#homeSubmenu" data-toggle="collapse" aria-expanded="false">SPJ dan LPJ <i class="fa fa-caret-down float-right mr-2"></i></a>
        <ul class="collapse list-unstyled" id="homeSubmenu">
            <li>
                <a href="{{url('/keuangan/spj/')}}">Surat Pertanggung Jawaban</a>
            </li>
            <li>   
                <a href="#">Laporan Pertanggung Jawaban</a>
            </li>

        </ul>
    </li>

    <li>
        <a href="#pageSubmenu" data-toggle="collapse" aria-expanded="false">Akun Belanja  <i class="fa fa-caret-down float-right mr-2"></i></a>
        <ul class="collapse list-unstyled" id="pageSubmenu">
            <li>
                <a href="{{url('/keuangan/akunbelanja/')}}">Daftar Akun Belanja</a>
            </li>
            <li>
                <a href="#">Panduan Akun Belanja</a>
            </li>
        </ul>
    </li>

    <li>
        <a href="#">Help</a>
    </li>

    <li>
        <a href="#">Contact</a>
    </li>
</ul>
</nav>

js:

<script>
        $(document).ready(function () {
            $(".ul .a").on("click", function () {
                $(".ul").find(".active").removeClass("active");
                $(this).addClass("active");
            });
        });
    </script>

标签: javascripthtmlcss

解决方案


修复您的 jQuery 函数:

将所有更新.ululAND .aa因为它不是类,而是 TAG。

<script>
        $(document).ready(function () {
            $("ul a").on("click", function () {
                $("ul").find(".active").removeClass("active");
                $(this).addClass("active");
            });
        });
    </script>


工作示例如下

如果您要使用具有下拉功能的完美示例侧导航,请参考下面的代码。它应该有效。它在 JavaScript 中。如果需要,您可以与 jQuery 合并。

/* Loop through all dropdown buttons to toggle between hiding and showing its dropdown content - This should avoid conflict. */
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
  dropdown[i].addEventListener("click", function() {
  this.classList.toggle("active");
  var dropdownContent = this.nextElementSibling;
  if (dropdownContent.style.display === "block") {
  dropdownContent.style.display = "none";
  } else {
  dropdownContent.style.display = "block";
  }
  });
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body {
  font-family: "Lato", sans-serif;
}

/* Fixed sidenav, full height */
.sidenav {
  height: 100%;
  width: 200px;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: #111;
  overflow-x: hidden;
  padding-top: 20px;
}

/* Style the sidenav links and the dropdown button */
.sidenav a, .dropdown-btn {
  padding: 6px 8px 6px 16px;
  text-decoration: none;
  font-size: 20px;
  color: #818181;
  display: block;
  border: none;
  background: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  outline: none;
}

/* On mouse-over */
.sidenav a:hover, .dropdown-btn:hover {
  color: #f1f1f1;
}

/* Main content */
.main {
  margin-left: 200px; /* Same as the width of the sidenav */
  font-size: 20px; /* Increased text to enable scrolling */
  padding: 0px 10px;
}

/* Add an active class to the active dropdown button */
.active {
  background-color: orange;
  color: white;
}

/* Dropdown container (hidden by default). Optional: add a lighter background color and some left padding to change the design of the dropdown content */
.dropdown-container {
  display: none;
  background-color: #262626;
  padding-left: 8px;
}

/* Optional: Style the caret down icon */
.fa-caret-down {
  float: right;
  padding-right: 8px;
}

/* Some media queries for responsiveness */
@media screen and (max-height: 450px) {
  .sidenav {padding-top: 15px;}
  .sidenav a {font-size: 18px;}
}
</style>
</head>
<body>

<div class="sidenav">
  <a href="#about">About</a>
  <a href="#services">Services</a>
  <a href="#clients">Clients</a>
  <a href="#contact">Contact</a>
  <button class="dropdown-btn">Dropdown 
    <i class="fa fa-caret-down"></i>
  </button>
  <div class="dropdown-container">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
  <a href="#contact">Search</a>
</div>

<div class="main">
  <h2>Sidebar Dropdown</h2>
  <p>Click on the dropdown button to open the dropdown menu inside the side navigation.</p>
  <p>This sidebar is of full height (100%) and always shown.</p>
  <p>Some random text..</p>
</div>



</body>
</html>


推荐阅读