如何使用location.hash打开引导面板/选项卡

时间:2014-03-21 16:36:02

标签: javascript jquery html twitter-bootstrap

我正在尝试链接到bootstrap 3手风琴的特定面板。链接将位于导航菜单中,因此有时链接将与手风琴位于同一页面上,有时它们将位于不同的页面上。我有一个示例,当链接在不同的页面上时可以使用,但如果您在同一页面上,它就不起作用。在这两种情况下我都需要它。

以下是我使用的代码:

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');
        });

}); 

这是一个演示,显示它从外部链接打开正确的面板:

http://www.bootply.com/render/123550/#service2

(如果该网址不起作用,您可能需要将此网址复制并粘贴到您的浏览器中。)

但是,如果您已经在页面上尝试使用链接,则必须双击它们才能让它们打开相应的面板。

以下是使用我的代码指向完整bootply的链接:http://www.bootply.com/123550

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

链接的click处理程序在浏览器跟随链接之前执行,因此您的处理函数仍会看到旧的location.hash

为了规避这一点,你可以

  • 对窗口的hashchange事件做出反应(其优势在于,当用户使用前进/后退按钮时,它甚至可以工作)
  • 从链接的哈希值而不是位置的哈希值确定要打开的部分。