jQuery 的 .hash
属性通常用于获取或设置 URL 的哈希部分(即 #
后面的内容)。在 Bootstrap 选项卡(Tabs)中,有时希望通过 URL 哈希来直接激活特定选项卡,但可能会遇到不起作用的情况。
$(document).ready(function() {
// 初始加载时检查哈希
if(window.location.hash) {
showTab(window.location.hash);
}
// 监听哈希变化
window.addEventListener('hashchange', function() {
showTab(window.location.hash);
});
// 显示对应选项卡的函数
function showTab(hash) {
var tabSelector = hash + '-tab';
if($(tabSelector).length) {
$(tabSelector).tab('show');
}
}
// 点击选项卡时更新哈希
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
window.location.hash = $(e.target).attr('href');
});
});
$(document).ready(function() {
// 启用哈希功能
$('a[data-toggle="tab"]').on('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
// 更新URL哈希
if(url.indexOf('#') === 0) {
window.location.hash = url;
}
// 显示选项卡
$(this).tab('show');
});
// 页面加载时激活对应选项卡
var hash = window.location.hash;
if(hash) {
$('a[href="' + hash + '"]').tab('show');
}
});
href
属性与哈希值匹配(如 #tab1
)<!DOCTYPE html>
<html>
<head>
<title>Bootstrap Tabs with Hash</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<ul class="nav nav-tabs" id="myTab">
<li class="nav-item">
<a class="nav-link" id="home-tab" data-bs-toggle="tab" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" id="profile-tab" data-bs-toggle="tab" href="#profile">Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" id="contact-tab" data-bs-toggle="tab" href="#contact">Contact</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade" id="home" role="tabpanel">Home content</div>
<div class="tab-pane fade" id="profile" role="tabpanel">Profile content</div>
<div class="tab-pane fade" id="contact" role="tabpanel">Contact content</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
$(document).ready(function() {
// 初始加载时激活对应选项卡
if(window.location.hash) {
var tabEl = document.querySelector(`a[href="${window.location.hash}"]`);
if(tabEl) {
new bootstrap.Tab(tabEl).show();
}
}
// 监听哈希变化
window.addEventListener('hashchange', function() {
var tabEl = document.querySelector(`a[href="${window.location.hash}"]`);
if(tabEl) {
new bootstrap.Tab(tabEl).show();
}
});
// 点击选项卡时更新哈希
$('a[data-bs-toggle="tab"]').on('shown.bs.tab', function(e) {
window.location.hash = $(e.target).attr('href');
});
});
</script>
</body>
</html>
这个解决方案适用于大多数情况,确保哈希与 Bootstrap 选项卡能够正常工作。
没有搜到相关的文章