javascript - 如何从侧边栏链接导航到同一页面上的新 bootstap 4 选项卡?
问题描述
我无法使用此技术获得侧边栏链接以导航到中心页面上的引导 4 个选项卡。这是我的javascript _SidebarLayout.cshtml
:
<script>
function selectTabNamedInUrlHash() {
let selectedTab = window.location.hash;
$('.nav-link[href="' + selectedTab + '"]').trigger('click');
}
jQuery(document).ready(function ($) {
selectTabNamedInUrlHash();
})
</script>
侧边栏锚链接到页面并将片段(哈希)添加到我要导航到的选项卡的 href(url 结束:SPC#SpcFilm)。侧边栏链接也调用了上述函数。
<a onclick="selectTabNamedInUrlHash();" asp-page="/SPC/Index" asp-fragment="SpcFilm">Film</a>
在 Index.cshtml 上,Bootstrap 4 选项卡由href="#SpcFilm"
此解决方案在导航到新页面时有效,但在导航到同一页面上的另一个选项卡时不起作用。
解决方案
我在同事的帮助下在这里回答我自己的问题。使用现代浏览器的 hashchange 事件(jQuery 可识别)来选择选项卡。在 Bootstrap 4 中,使用data-toggle="tab"
或激活选项卡data-toggle="pill"
。所以唯一需要的脚本是:
<script>
$(window).on('hashchange ready', function () {
let selectedTab = window.location.hash;
$('a[href="' + selectedTab + '"][data-toggle="tab"]').trigger('click');
});
</script>
每个侧边栏链接都包含一个与所需选项卡的 href 匹配的哈希。当单击侧边栏链接时,上面的 jQuery 会触发单击选项卡,从而打开页面上的选项卡。
注意:请务必onclick="selectTabNamedInUrlHash();"
从侧边栏中删除链接并删除相应的功能,因为它不再需要并且可能会干扰解决方案。
推荐阅读
- angular - *ngFor 中的角度翻译
- python - 将列表转换为字典的最快方法,列表值作为键,列表索引作为值
- laravel - Laravel 7 whereIn 查询只返回第一个索引
- r - 使用 df1 的两列中的值从 df2 中获取值,并将它们用作索引。与 Excel 中的 index(match(),match()) 方法相同
- powerbi - 查询编辑器中的关键字搜索
- sql - 访问运行时错误 2465。找不到表达式中引用的字段“1”。找不到问题
- sql-server - 在 t-sql 中解析 Xml,使用根内多个级别的 XQuery 选择器发出问题,并解析来自选定节点的值
- javascript - JS Snippet 从本地文件读取
- java - 在 Dataflow 模板中调用 waitUntilFinish() 之后可以运行代码吗?
- cgal - 是否有一个 CGAL 函数可以检查一个点是否在带孔的线性多边形内?