我正在使用Bootstrap“collapse”插件为一长串链接制作一个 accordion 。accordion-body标签包含“collapse”,因此当页面加载时,所有组都将折叠。当您打开一个组并单击一个链接时,它会将您带到一个新页面以查看一些详细信息,然后单击后退链接或浏览器返回到列表。不幸的是,当您返回时, accordion 又回到了折叠状态,您必须再次打开组并找到您所在的位置。我预计会有很多这样的来回导航,这种行为将会令人沮丧。
有没有一些方法可以保留用户的位置并返回到它,或者只是防止页面重新加载或JavaScript再次触发。
我认为解决方案可能是沿着这些路线,但不确定。Twitter bootstrap: adding a class to the open accordion title
9条答案
按热度按时间ykejflvf1#
你可以很容易地通过一个cookie来解决这个问题。有很多简化的库,比如我在下面的例子中使用的https://github.com/carhartl/jquery-cookie:
字符串
将以下代码添加到脚本部分(
#accordion2
指的是修改后的twitter Bootstrap 示例,我将在后面列出)型
你完了!这里是www.example.com上的示例的修改版本http://twitter.github.com/bootstrap/javascript.html#collapse带有可单击的链接,当您返回时-最后显示的 accordion 组会自动打开
型
xv8emn3q2#
在Bootstrap 3.x.x中,您需要使用以下脚本将上次打开的状态保存到cookie中。
HTML标记
字符串
Jquery
型
cs7cruho3#
我尝试了上面建议的技术,它对我有效(某种程度上),但在某些情况下,调用.collapse(“show”)似乎会破坏 accordion 切换行为。打开第一个面板将使先前打开的面板处于打开状态。我用jQuery通过添加class“in”来解决这个问题:
字符串
否则,谢谢davidkonrad让我走上正轨。
au9on6nz4#
谢谢你,它工作。我对它做了一点修改,只是简单地保留了特定DIV的显示/隐藏状态(而不是特定于在DIV列表中只显示一个DIV)。
字符串
xxhby3vn5#
另一个可用的选项是使用url散列。
字符串
yx2lnoni6#
更新答案
好吧,伙计们,所以我花了一些时间试图让它工作。主要是因为我发现的所有答案都超级旧,没有更新。
这将适用于:
*Bootstrap 3.x.x
*Bootstrap 4.x.x
*Bootstrap 5.x.x
**注意:**cookie更新到新的Github存储库https://github.com/js-cookie/js-cookie,用法已更改,例如,现在是
Cookies.get('name');
而不是$.cookie('name');
包括
字符串
指令码
型
变更:
shown
,而是shown.bs.collapse
折叠HTML
型
3df52oht7#
谢谢你,发现它很有帮助,但如果你使用Bootstrap 3和最新的jquery,这是有效的:
字符串
希望这能为其他人节省一些时间……
8fsztsew8#
对于那些没有/不想使用jQuery/$的人,这是适合我的Vanilla JavaScript版本(Bootstrap版本5):
字符串
一些解释:
store-collapse
类,以便精确地选择我想要启用 * 保存/恢复折叠状态到本地存储 * 的元素。范例:型
参考文献:
2nbm6dog9#
如果有人仍然感兴趣,有我的Bootstrap 5.3测试代码
字符串