引导选项卡的URL不会导致正确的选项卡

时间:2018-03-16 14:01:22

标签: javascript jquery twitter-bootstrap-3

我在这里看到了一些相关问题,但到目前为止我找不到适合我的解决方案。

事情就是这样:我有一个tab部分,其结构与this相同,而且工作得很好。但是,如果我创建一个URL,比方说,第二个标签,就像这个www.example.com/path/to#tab2一样,它会将我带到默认选项卡tab1。

在我的研究中,我读到了这可能是一个解决方案:

$(function(){
  var hash = window.location.hash;
  hash && $('ul.nav a[href="' + hash + '"]').tab('show');

  $('.nav-tabs a').click(function (e) {
    $(this).tab('show');
    var scrollmem = $('body').scrollTop();
    window.location.hash = this.hash;
    $('html,body').scrollTop(scrollmem);
  });
});

之后,如果我转到www.example.com/path/to并浏览标签,它们就像以前一样工作,但是,如果我直接转到此网址www.example.com/path/to#tab2,我会在控制台中收到此错误:< / p>

Uncaught TypeError: $(...).tab is not a function

据我所知,这是Jquery加载的一个问题,这对我来说没有意义,因为我的.js文件已经有了jquery函数并且它们正在工作。

Jquery版本:1.12.4;

Bootstrap版本:3.3.5;

1 个答案:

答案 0 :(得分:0)

实际上我自己找到了答案,这就是我所做的:

var hash = document.location.hash;
var prefix = '/';

if (hash) {
  $('.nav-tabs a[href="' + hash.replace(prefix, '') + '"]').tab('show');
}

我接近使它工作,只是之前没有使用正确的前缀。