如何在hash
中保留url
值,并在刷新页面后保持标签或div
打开。这是我的示例代码:
$( document ).ready(function() {
jQuery(function($) {
showTab(location.hash || "userView");
$("#nav a").click(function() {
var hash = this.getAttribute("href");
if (hash.substring(0, 1) === "#") {
hash = hash.substring(1);
}
window.location.hash = hash;
showTab(hash);
return false;
});
function showTab(hash) {
$(".displayUsers").hide();
switch (hash) {
case "userView": ViewUsers(); break;
case "userLogs": UserLogs(); break;
case "addUser": AddUser(); break;
}
}
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel">
<dl id="nav">
<dt>
<p>•<a href="#addUser" class="listLink"> ADD USER</a></p>
</dt>
<dt>
<p>•<a href="#userLogs" class="listLink"> USER LOGS</a></p>
</dt>
<dt>
<p>•<a href="#userView" class="listLink"> VIEW USERS</a></p>
</dt>
</dl>
</div>
<div id="addUser" class="displayUsers" hidden></div>
<div id="userLogs" class="displayUsers" hidden></div>
<div id="userView" class="displayUsers" hidden></div>
&#13;
刷新页面后,hash
值保留在url
中,但当前有效的div
被设置为默认值 - 隐藏。
答案 0 :(得分:2)
您最好在hash
函数中解析showTab
。主要问题是,您发送了hash
或userView
,但hash
开头有#
。您解析它onClick
但不解析它onload
。所以我将代码解析为showTab
函数。
showTab(location.hash || "userView");
$("#nav a").click(function() {
var hash = this.getAttribute("href");
showTab(hash);
return false;
});
function showTab(hash) {
if (hash.substring(0, 1) === "#") {
hash = hash.substring(1);
}
window.location.hash = hash;
$(".displayUsers").hide();
switch (hash) {
case "userView":
ViewUsers();
break;
case "userLogs":
UserLogs();
break;
case "addUser":
AddUser();
break;
}
}
function ViewUsers() {
$("#userView").show();
}
function UserLogs() {
$("#userLogs").show();
}
function AddUser() {
$("#addUser").show();
}