【发布时间】:2018-06-14 00:30:42
【问题描述】:
我将基于https://www.codeply.com/go/T2mpwMOt60 的菜单集成到我正在构建的网站中。在构建过程中使用它后,我觉得它缺少一个功能。 理想情况下,我希望在导航到另一个页面时菜单项保持打开状态。因此,查看示例菜单,这意味着如果第 3 项已打开,则在重新加载页面时它应该保持打开状态,但如果单击另一个菜单标题则关闭。 鉴于每个菜单部分都以
开头<a href="#menu1"
<a href="#menu2"
等,当打开时,类从
class="list-group-item collapsed"
到
class="list-group-item"
我认为可以将当前菜单状态写入本地存储,然后在页面加载时读回以恢复之前的状态。
有没有人知道可以为我在编写此类功能时指明正确方向的示例?
我刚刚尝试使用以下脚本保存到 localStorage
$(document).ready(function () {
$('a').click(function() {
//store the id of the collapsible element
localStorage.setItem('collapseItem', $(this).attr('href'));
});
var collapseItem = localStorage.getItem('collapseItem');
if (collapseItem) {
$(collapseItem).collapse('show')
}
})
它不会重新打开菜单,但我怀疑这是由于放入了 local.storage 例如,当我第一次单击打开“客户”子菜单时,它存储#menu5,这是我希望在重新加载时重新打开的子菜单,但是当单击该菜单内的任何子菜单时,存储的数据将更改为最后点击链接的 url。
附加说明,如果我在存储#menu1、#menu2 等的同时重新加载页面,那么它会在正确显示菜单的情况下加载。因此,这纯粹是一个弄清楚如何不存储除了最初打开的#menu 之外的任何东西的情况。
【问题讨论】:
-
方法一: 使用 sessionStorage() 方法保存一个值,表示重新加载时某个菜单/面板是否保持打开状态,每次保存 true/false它打开/关闭。如果需要,您还可以保存一些关于输入内容、滚动距离等的数据,以便它可以作为一种还原点。 方法二: 编写一个脚本,只抓取您想要携带的任何内容并将其放置在下一个加载的页面中。 方法三: 使用 iFrame 之类的东西来分隔一切。这可能会导致一些问题,但对于此类事情可能会有所帮助。
-
@user9259829 我添加了一些关于我测试的脚本的附加信息,这部分成功。你能解释一下吗?
-
尝试添加一个条件/比较,以确保它仅在打开菜单时设置值,而不是单击任何对象。 或者为菜单到 a 标签以外的东西,然后改用它。也许试试按钮?
-
很抱歉过度使用粗体字,我总是尽量让事情更容易阅读
标签: javascript html bootstrap-4