Javascript 如何使用location.hash打开引导面板/选项卡
我正在尝试链接到bootstrap 3手风琴的特定面板。链接将位于导航菜单中,因此有时链接将与手风琴位于同一页面上,有时链接将位于不同页面上。我举了一个例子,当链接位于不同的页面上时,它是有效的,但如果您位于同一页面上,它就不起作用。在这两种情况下我都需要它 以下是我正在使用的代码:Javascript 如何使用location.hash打开引导面板/选项卡,javascript,jquery,html,twitter-bootstrap,Javascript,Jquery,Html,Twitter Bootstrap,我正在尝试链接到bootstrap 3手风琴的特定面板。链接将位于导航菜单中,因此有时链接将与手风琴位于同一页面上,有时链接将位于不同页面上。我举了一个例子,当链接位于不同的页面上时,它是有效的,但如果您位于同一页面上,它就不起作用。在这两种情况下我都需要它 以下是我正在使用的代码: jQuery(document).ready(function($) { // open panel when linked from an external link (this works)
jQuery(document).ready(function($) {
// open panel when linked from an external link (this works)
location.hash && $(location.hash + '.collapse').collapse('show');
// open panel when link is on the same page (incorrectly requires double click)
$(".nav-left a").on("click", function() {
location.hash && $(location.hash + '.collapse').collapse('show');
});
});
下面是一个演示,演示如何从外部链接打开正确的面板:
(如果此URL不起作用,您可能需要将其复制并粘贴到浏览器中。)
但是,如果您在页面上尝试使用这些链接,则必须双击它们才能打开相应的面板
以下是使用我的代码完整引导的链接:
谢谢你的帮助 链接的
单击处理程序在浏览器跟随链接之前执行,因此处理程序函数仍将看到旧的位置。哈希
为了避免这种情况,你可以
- 对窗口的
hashchange
事件做出反应(其优点是,当用户使用前进/后退按钮时,它甚至可以工作)或
- 从链接的哈希值而不是位置的哈希值确定要打开的节
您可能需要使用窗口的hashchange
事件来决定要展开手风琴的哪个部分。还有jQuery插件,例如和。谢谢。你知道如何使用链接的散列来打开分区吗?我尝试了一些不起作用的变体$('.nav左a[href=“#'+'.collapse'+'”).collapse('show');和$(this.hash).collapse('show');例如,@Lindsay只需在“从同一页面链接时打开面板”部分中的单击处理程序中将location.hash
替换为this.hash
。由于处理程序绑定到所有匹配的
标记,此
将引用已单击的链接。但是,正如我所说,您可以通过使用window.onhashchange
(可能除了单击处理程序之外)来正确处理前进/后退按钮,从而帮助您的用户。谢谢。成功了。不知道我为什么要把它复杂化!