jQuery 和 HTML 如何在下拉菜单中使用存储空间

jQuery and HTML how to use storage in a dropdown menu

我有一个问题要问你。

我有一个带下拉菜单的边栏 "toggle buttons"。代码HTML如下

<div class="container-fluid">
   <div class="row">
     <nav class="col-md-2 d-none d-md-block bg-dark sidebar">
       <div class="sidebar-sticky">
         <ul class="nav flex-column">
             <li class="nav-item"  id="sidebar">
                 <a class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1" href="#firstSubmenu" data-toggle="collapse"
                 aria-expanded="false" class="dropdown-toggle">Performance Monitoring<span data-feather="plus-circle"></span></a>
                 <ul class="collapse list-unstyled" id="firstSubmenu">
                     <li>
                         <a class="nav-link" href="#">
                             <span data-feather="monitor"></span>
                             Dashboard</a>
                     </li>
                     <li>
                         <a class="nav-link" href="/conto_economico">
                             <span data-feather="trending-up"></span>
                             Conto Economico</a>
                     </li>
                    ....

一切正常,但如果我打开下拉菜单并在更新或更改 url 页面后,下拉菜单会崩溃,我不得不再次打开它。

所以我寻找一个 jQuery 代码,让我有可能实现我的目标。我认为可以使用 localStorage 来记住下拉菜单是否打开,以及在上传页面时提供相同的打开和关闭下拉菜单。

我已尝试根据我的目标调整代码,但我不擅长 jQuery 代码。我已经尝试了以下代码但不起作用

  $("#sidebar li a").on("click", function() {
// get index of parent `<li>` within it's siblings
var container = $(this).closest("li");
var selected_item_index = $("#sidebar li").index(container);
localStorage.setItem("sidebar_selected", selected_item_index);
});

$(function() {
    $("#sidebar li").eq(parseInt(localStorage.getItem("selected_item_index "))).addClass("active").siblings().removeClass('active');
});

您已将容器设置为 li 元素,并且您正在尝试在 set of anchor 元素中查找其索引。您需要在 li 元素集中找到索引。像这样

var container = $(this).closest("li");
var selected_item_index = $("#sidebar li").index(container);

此外,在使用 setStorage 设置 li class active 后,您可能希望从其他同级元素中删除 active class。此外,用于 getstorage 和 setstorage 的键名是不同的。它们应该是相同的

 $("#sidebar li").eq(parseInt(localStorage.getItem("sidebar_selected "))).addClass("active").siblings().removeClass('active');