【发布时间】:2019-03-07 08:57:24
【问题描述】:
这是一个侧边栏菜单,直到现在每次我重新加载页面时它都会关闭选项卡,这很烦人,我应该添加什么来解决这个问题?
_menu.html.erb
<div id="mySidepanel" class="sidepanel">
<button class="closebtn" onclick="closeNav()"><i class="fas fa-times-circle"></i></button>
<div class="dropdown-container">
<%= link_to "Journal", "#", class: "drop-item" %>
<%= link_to "Stats","#", class: "drop-item" %>
</div>
<li class="dropdown-btn">Suppliers
<i class="fa fa-caret-down"></i>
</li>
<div class="dropdown-container">
<%= link_to "Add a supplier", "#", class: "drop-item" %>
<%= link_to "Suppliers", "#", class: "drop-item" %>
</div>
<%= link_to "Orders", "#", class: "list-item" %>
<%= link_to "Users", "#", class: "list-item" %>
</div>
sidebar.js
编辑,添加了整个代码,我没有使用 Bootstrap 下拉菜单
$(document).on('turbolinks:load', function() {
if ($('.dropdown-btn')){
activeTab = document.getElementsByClassName('active')[0].dataset.activeDropdown.myArticles
sessionStorage.setItem('foo', activeTab);
}
if(activeTab){
$('#mySidepanel a[href="' + activeTab + '"]').tab('show');
}
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";
}
});
}
});
function openNav() {
document.getElementById("mySidepanel").style.width = "180px";
}
function closeNav() {
document.getElementById("mySidepanel").style.width = "0";
}
更新
我添加了这个 js 代码,但我需要帮助:
$('.drop-item').on('shown.bs.tab', function (e) {
localStorage.setItem('activeTab', $(e.target).attr('href'));
});
var activeTab = localStorage.getItem('activeTab');
if(activeTab){
$('#mySidepanel a[href="' + activeTab + '"]').tab('show');
}
【问题讨论】:
-
您可以使用 localStorage 跟踪用户打开的内容,然后在下次加载页面时打开这些选项卡。
-
好的,但是怎么做?请问?
标签: javascript html ruby-on-rails