如何在页面刷新时保留选定的 Bootstrap 选项卡?

How can I keep selected Bootstrap tab on page refresh?

提问人:Code Lover 提问时间:9/25/2013 最后编辑:isherwoodCode Lover 更新时间:1/4/2023 访问量:246841

问:

我正在尝试使用 Bootstrap 3 刷新时保持所选选项卡处于活动状态。尝试并检查了一些问题,这里已经问过一些问题,但对我来说没有任何作用。不知道我错在哪里。这是我的代码

[HTML全文]

<!-- tabs link -->
<ul class="nav nav-tabs" id="rowTab">
    <li class="active"><a href="#personal-info" data-toggle="tab">Personal Information</a></li>
    <li><a href="#Employment-info" data-toggle="tab">Employment Information</a></li>
    <li><a href="#career-path" data-toggle="tab">Career Path</a></li>
    <li><a href="#warnings" data-toggle="tab">Warning</a></li>
</ul>
<!-- end: tabs link -->

<div class="tab-content">
    <div class="tab-pane active" id="personal-info">
        tab data here...
    </div>

    <div class="tab-pane" id="Employment-info">
        tab data here...
    </div>

    <div class="tab-pane" id="career-path">
        tab data here...
    </div>

    <div class="tab-pane" id="warnings">
        tab data here...
    </div>
</div>

Javascript的:

// tab
$('#rowTab a:first').tab('show');

//for bootstrap 3 use 'shown.bs.tab' instead of 'shown' in the next line
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
//save the latest tab; use cookies if you like 'em better:
localStorage.setItem('selectedTab', $(e.target).attr('id'));
});

//go to the latest tab, if it exists:
var selectedTab = localStorage.getItem('selectedTab');
if (selectedTab) {
  $('#'+selectedTab).tab('show');
}
jquery 选项卡 twitter-bootstrap-3

评论

0赞 The Dark Knight 9/25/2013
它不起作用的原因是 ,它没有存储选定的选项卡。当我这样做时,我得到了:。所以你应用的逻辑是不正确的console.log("selectedTab::"+selectedTab);selectedTab::undefined
0赞 Code Lover 9/25/2013
所以你能指导我该怎么做吗?
0赞 The Dark Knight 9/25/2013
我认为这会起作用:jsbin.com/UNuYoHE/2/edit.如果它确实让我知道,那么我将以清晰的方式发布答案。您可能还想查看 div 选项卡文本。当您单击它们时,它们不会给出正确的响应。例如,如果单击 tab4,则会获得 tab1 文本。
0赞 The Dark Knight 9/25/2013
顺便说一句,我用这个答案进行JS编码:stackoverflow.com/questions/9529723/...
0赞 Code Lover 9/25/2013
谢谢,它不起作用并返回第一个选项卡。是的,我已经参考了那个答案。但没有用..:(

答:

212赞 koppor 9/26/2013 #1

我更喜欢将选定的选项卡存储在窗口的哈希值中。这还可以向同事发送链接,而同事看到的是“同一”页面。诀窍是在选择另一个选项卡时更改位置的哈希值。如果您已经在页面中使用了 #,则可能必须拆分哈希标签。在我的应用程序中,我使用 “:” 作为哈希值分隔符。

<ul class="nav nav-tabs" id="myTab">
  <li class="active"><a href="#home">Home</a></li>
  <li><a href="#profile">Profile</a></li>
  <li><a href="#messages">Messages</a></li>
  <li><a href="#settings">Settings</a></li>
</ul>

<div class="tab-content">
  <div class="tab-pane active" id="home">home</div>
  <div class="tab-pane" id="profile">profile</div>
  <div class="tab-pane" id="messages">messages</div>
  <div class="tab-pane" id="settings">settings</div>
</div>

JavaScript,必须嵌入到上述部分之后。<script>...</script>

$('#myTab a').click(function(e) {
  e.preventDefault();
  $(this).tab('show');
});

// store the currently selected tab in the hash value
$("ul.nav-tabs > li > a").on("shown.bs.tab", function(e) {
  var id = $(e.target).attr("href").substr(1);
  window.location.hash = id;
});

// on load of the page: switch to the currently selected tab
var hash = window.location.hash;
$('#myTab a[href="' + hash + '"]').tab('show');

评论

0赞 Sean Adams-Hiett 1/29/2014
在脚本部分中,您应该在 和 的末尾添加一个分号e.preventDefault();$(this).tab('show');
13赞 Philipp Michael 7/7/2015
不幸的是,当您单击它时,浏览器会跳转到选项卡内容。这是设置 window.location.hash 值时的默认行为。另一种方法是使用 push.state,但您需要 IE<=9 的 polyfill。有关更多信息和其他替代解决方案,请查看 stackoverflow.com/questions/3870057/...
3赞 Patrice Poliquin 12/13/2016
当我们单击元素时,有什么方法可以防止“假滚动”到有问题的 id?
1赞 Alex Mazzariol 7/13/2017
滚动是因为分配给标签页的 id。如果您使用语义 ID 并篡改哈希(即添加前缀/后缀),它将不会被识别为有效 ID,并且不会发生滚动。将用这个扩展答案。
1赞 mboy 3/12/2019
@koppor它有效,但是当我直接跳转到另一个保存的选项卡(通过链接)时,它会在跳转到链接中的选项卡之前快速显示主页选项卡或第一个选项卡大约 1 秒。有什么想法可以防止它显示第一个选项卡,因为它是不需要的吗?
140赞 Xavi Martínez 2/1/2014 #2

这是我尝试过的最好的一个:

$(document).ready(function() {
    if (location.hash) {
        $("a[href='" + location.hash + "']").tab("show");
    }
    $(document.body).on("click", "a[data-toggle='tab']", function(event) {
        location.hash = this.getAttribute("href");
    });
});
$(window).on("popstate", function() {
    var anchor = location.hash || $("a[data-toggle='tab']").first().attr("href");
    $("a[href='" + anchor + "']").tab("show");
});

评论

0赞 Rei Tee 9/29/2015
当我单击选择框或文本框时,它会保持刷新
1赞 leifdenby 10/26/2015
我认为将选择器更改为会更好。选择器的编写方式现在也会在单击链接时更改浏览器 URL,例如打开模式。"a[data-toggle=tab]"
0赞 jeesus 12/2/2015
不错的解决方案,但是页面在选项卡更改时不断闪烁,这不是我需要的。选项卡中填充了 AJAX,也许这可能是问题?
5赞 asdacap 2/2/2016
您可能希望在选择器上添加字符串括号,例如 'a[href=“' + location.hash + '”]' 。偶然发现了一个语法错误。
1赞 Jiveman 6/12/2018
使用这个原样与 Bootstrap 下拉列表冲突(在一种情况下,它使用并且我碰巧与选项卡在同一页面上。就像有人在这里建议的那样,只需替换它就为我提供了诀窍。data-toggle="dropdown"$(document.body).on("click", "a[data-toggle]", function(event) {$(document.body).on("click", "a[data-toggle='tab']", function(event) {
0赞 Theodor Heiselberg 3/3/2014 #3

使用 html5 我制作了这个:

页面上的某些位置:

<h2 id="heading" data-activetab="@ViewBag.activetab">Some random text</h2>

viewbag 应该只包含页面/元素的 id,例如:“testing”

我创建了一个网站.js并在页面上添加了脚本:

/// <reference path="../jquery-2.1.0.js" />
$(document).ready(
  function() {
    var setactive = $("#heading").data("activetab");
    var a = $('#' + setactive).addClass("active");
  }
)

现在您所要做的就是将您的 ID 添加到导航栏中。例如:

<ul class="nav navbar-nav">
  <li **id="testing" **>
    @Html.ActionLink("Lalala", "MyAction", "MyController")
  </li>
</ul>

所有数据属性都:)

5赞 2 revsZiad #4

根据 Xavi Martínezkoppor 提供的答案,我想出了一个使用 url hash 或 localStorage 的解决方案,具体取决于后者的可用性:

function rememberTabSelection(tabPaneSelector, useHash) {
    var key = 'selectedTabFor' + tabPaneSelector;
    if(get(key)) 
        $(tabPaneSelector).find('a[href=' + get(key) + ']').tab('show');

    $(tabPaneSelector).on("click", 'a[data-toggle]', function(event) {
        set(key, this.getAttribute('href'));
    }); 

    function get(key) {
        return useHash ? location.hash: localStorage.getItem(key);
    }

    function set(key, value){
        if(useHash)
            location.hash = value;
        else
            localStorage.setItem(key, value);
    }
}

用法:

$(document).ready(function () {
    rememberTabSelection('#rowTab', !localStorage);
    // Do Work...
});

它跟不上后退按钮,就像哈维·马丁内斯的解决方案一样。

5赞 Nguyen Pham 8/29/2015 #5

我的代码,它对我有用,我使用 HTML5localStorage

$('#tabHistory  a').click(function(e) {
  e.preventDefault();
  $(this).tab('show');
});
$("ul.nav-tabs#tabHistory > li > a").on("shown.bs.tab", function(e) {
  var id = $(e.target).attr("href");
  localStorage.setItem('selectedTab', id)
});
var selectedTab = localStorage.getItem('selectedTab');
$('#tabHistory a[href="' + selectedTab + '"]').tab('show');
2赞 Joeri Landman 12/12/2015 #6

由于我还不能发表评论,所以我从上面复制了答案,这真的帮助了我。但是我将其更改为使用cookie而不是 #id 因此我想分享更改。这样就可以将活动选项卡存储超过一次刷新(例如多次重定向)的时间,或者当 id 已被使用并且您不想实现 koppors 拆分方法时。

<ul class="nav nav-tabs" id="myTab">
    <li class="active"><a href="#home">Home</a></li>
    <li><a href="#profile">Profile</a></li>
    <li><a href="#messages">Messages</a></li>
    <li><a href="#settings">Settings</a></li>
</ul>

<div class="tab-content">
    <div class="tab-pane active" id="home">home</div>
    <div class="tab-pane" id="profile">profile</div>
    <div class="tab-pane" id="messages">messages</div>
    <div class="tab-pane" id="settings">settings</div>
</div>

<script>
$('#myTab a').click(function (e) {
    e.preventDefault();
    $(this).tab('show');
});

// store the currently selected tab in the hash value
$("ul.nav-tabs > li > a").on("shown.bs.tab", function (e) {
    var id = $(e.target).attr("href").substr(1);
    $.cookie('activeTab', id);
});

    // on load of the page: switch to the currently selected tab
    var hash = $.cookie('activeTab');
    if (hash != null) {
        $('#myTab a[href="#' + hash + '"]').tab('show');
    }
</script>

评论

0赞 Code Lover 12/12/2015
感谢您的更新。实际上,我一直在寻找这样的解决方案,但比我想要的时间@koppor我只得到了一个有效的答案。事实上,如果我们想使用后退功能,这是很好的方法之一。感谢您的更新
2赞 Vitalii Isaenko 1/19/2016 #7

我尝试了 Xavi Martínez 提供的代码。它有效,但不适用于 IE7。问题是 - 选项卡不引用任何相关内容。
因此,我更喜欢使用此代码来解决这个问题。

function pageLoad() {
  $(document).ready(function() {

    var tabCookieName = "ui-tabs-1"; //cookie name
    var location = $.cookie(tabCookieName); //take tab's href

    if (location) {
      $('#Tabs a[href="' + location + '"]').tab('show'); //activate tab
    }

    $('#Tabs a').click(function(e) {
      e.preventDefault()
      $(this).tab('show')
    })

    //when content is alredy shown - event activate 
    $('#Tabs a').on('shown.bs.tab', function(e) {
      location = e.target.hash; // take current href
      $.cookie(tabCookieName, location, {
        path: '/'
      }); //write href in cookie
    })
  });
};

评论

0赞 random-forest-cat 4/14/2016
这很好,但缺点是您将无法与活动选项卡共享链接
27赞 xfscrypt 1/28/2016 #8

Xavi 的代码几乎可以完全正常工作。但是,当导航到另一个页面时,提交表单,然后被重定向到带有我的选项卡的页面,根本没有加载保存的选项卡。

localStorage 来救援(略微更改了 Nguyen 的代码):

$('a[data-toggle="tab"]').click(function (e) {
    e.preventDefault();
    $(this).tab('show');
});

$('a[data-toggle="tab"]').on("shown.bs.tab", function (e) {
    var id = $(e.target).attr("href");
    localStorage.setItem('selectedTab', id)
});

var selectedTab = localStorage.getItem('selectedTab');
if (selectedTab != null) {
    $('a[data-toggle="tab"][href="' + selectedTab + '"]').tab('show');
}

评论

2赞 Lech Osiński 1/25/2017
这是黄金!它甚至可以与模态一起使用!很好的答案。
3赞 Gary.Ray 3/9/2017
此代码非常棒,如果您希望选项卡保持选中状态,即使用户离开站点(结束会话)并稍后返回,则此代码非常有效。若要使选择仅在当前会话期间保留,并返回到下一个会话的默认选项卡,请将“localStorage”的两个实例替换为“sessionStorage”。
0赞 Apps-n-Add-Ons 2/11/2018
简短、甜蜜的复制/粘贴解决方案,非常适合 Bootstrap 4。
1赞 mxmissile 1/30/2019
[data-toggle="pill"]用于药丸
17赞 Ajith R Nair 4/6/2016 #9

这个使用 HTML5 来存储活动选项卡localStorage

$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
    localStorage.setItem('activeTab', $(e.target).attr('href'));
});
var activeTab = localStorage.getItem('activeTab');
if (activeTab) {
   $('#navtab-container a[href="' + activeTab + '"]').tab('show');
}

编号: http://www.tutorialrepublic.com/faq/how-to-keep-the-current-tab-active-on-page-reload-in-bootstrap.php https://www.w3schools.com/bootstrap/bootstrap_ref_js_tab.asp

评论

0赞 random-forest-cat 4/14/2016
这很好,但缺点是您将无法与活动选项卡共享链接
1赞 Dung 4/28/2016
这很好,优点是它不会引入“window.location.hash”向 URL 中的 HTTP 请求参数添加哈希值的问题,从而导致其他 HTTP 请求(如分页等)读取冲突和错误参数。
1赞 RafaSashi 12/20/2016 #10

除了哈维·马丁内斯(Xavi Martínez)的回答之外,还避免了点击跳跃

避免跳跃

$(document).ready(function(){

    // show active tab

    if(location.hash) {

        $('a[href=' + location.hash + ']').tab('show');
    }

    // set hash on click without jumb

    $(document.body).on("click", "a[data-toggle]", function(e) {

        e.preventDefault();

        if(history.pushState) {

            history.pushState(null, null, this.getAttribute("href"));
        }
        else {

            location.hash = this.getAttribute("href");
        }

        $('a[href=' + location.hash + ']').tab('show');

        return false;
    });
});

// set hash on popstate

$(window).on('popstate', function() {

    var anchor = location.hash || $("a[data-toggle=tab]").first().attr("href");

    $('a[href=' + anchor + ']').tab('show');
});

嵌套选项卡

以“_”字符为分隔符的实现

$(document).ready(function(){

    // show active tab

    if(location.hash) {

        var tabs = location.hash.substring(1).split('_');

        $.each(tabs,function(n){

            $('a[href=#' + tabs[n] + ']').tab('show');
        });         

        $('a[href=' + location.hash + ']').tab('show');
    }

    // set hash on click without jumb

    $(document.body).on("click", "a[data-toggle]", function(e) {

        e.preventDefault();

        if(history.pushState) {

            history.pushState(null, null, this.getAttribute("href"));
        }
        else {

            location.hash = this.getAttribute("href");
        }

        var tabs = location.hash.substring(1).split('_');

        //console.log(tabs);

        $.each(tabs,function(n){

            $('a[href=#' + tabs[n] + ']').tab('show');
        });

        $('a[href=' + location.hash + ']').tab('show');

        return false;
    });
});

// set hash on popstate

$(window).on('popstate', function() {

    var anchor = location.hash || $("a[data-toggle=tab]").first().attr("href");

    var tabs = anchor.substring(1).split('_');

    $.each(tabs,function(n){

        $('a[href=#' + tabs[n] + ']').tab('show');
    });

    $('a[href=' + anchor + ']').tab('show');
});
1赞 Vaibhav 2/8/2017 #11

感谢分享。

通过阅读所有解决方案。我想出了一个解决方案,该解决方案使用url哈希或localStorage,具体取决于后者的可用性,代码如下:

$(function(){
    $(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
        localStorage.setItem('activeTab', $(e.target).attr('href'));
    })

    var hash = window.location.hash;
    var activeTab = localStorage.getItem('activeTab');

    if(hash){
          $('#project-tabs  a[href="' + hash + '"]').tab('show');   
    }else if (activeTab){
        $('#project-tabs a[href="' + activeTab + '"]').tab('show');
    }
});
51赞 insign 3/4/2017 #12

其他人的混合回答:

  • 点击时没有跳跃
  • 保存位置哈希
  • 保存在 localStorage 上(例如:用于表单提交)
  • 只需复制并粘贴;)

    if (location.hash) {
      $('a[href=\'' + location.hash + '\']').tab('show');
    }
    var activeTab = localStorage.getItem('activeTab');
    if (activeTab) {
      $('a[href="' + activeTab + '"]').tab('show');
    }
    
    $('body').on('click', 'a[data-toggle=\'tab\']', function (e) {
      e.preventDefault()
      var tab_name = this.getAttribute('href')
      if (history.pushState) {
        history.pushState(null, null, tab_name)
      }
      else {
        location.hash = tab_name
      }
      localStorage.setItem('activeTab', tab_name)
    
      $(this).tab('show');
      return false;
    });
    $(window).on('popstate', function () {
      var anchor = location.hash ||
        $('a[data-toggle=\'tab\']').first().attr('href');
      $('a[href=\'' + anchor + '\']').tab('show');
    });
    

评论

4赞 kentor 6/15/2017
我从许多不同的地方尝试过最好的解决方案。跳转到标签内容很烦人
4赞 Shahbaz A. 8/31/2017
有了这个答案,内容跳跃仍然存在
2赞 Gary Stanton 9/15/2017
发现一个警告 - 存储在本地存储中的选项卡将覆盖位置哈希中的选项卡,如果已经访问过该页面,则很难跟踪链接。我是这样更新的:var activeTab = localStorage.getItem('activeTab'); if (location.hash) { $('a[href=\'' + location.hash + '\']').tab('show'); } else if (activeTab) { $('a[href="' + activeTab + '"]').tab('show'); }
1赞 mboy 3/12/2019
我想知道为什么这对我不起作用..我应该替换此代码中的某些内容,而不仅仅是字面上的复制和粘贴吗?:)
1赞 Jonathan 5/24/2019
要使它工作,您必须将此脚本放在选项卡之后,或者将第一个子句(两个ifs + var dec)包装起来,因为您的选项卡尚不存在,并且它会尝试在加载之前猛烈抨击活动选项卡$(document).ready(function() {
5赞 Nobody 8/20/2017 #13

我试过这个,它有效:

    jQuery(document).ready(function() {
        jQuery('a[data-toggle="pill"]').on('show.bs.tab', function(e) {
            localStorage.setItem('activeTab', jQuery(e.target).attr('href'));
        });

        // Here, save the index to which the tab corresponds. You can see it 
        // in the chrome dev tool.
        var activeTab = localStorage.getItem('activeTab');

        // In the console you will be shown the tab where you made the last 
        // click and the save to "activeTab". I leave the console for you to 
        // see. And when you refresh the browser, the last one where you 
        // clicked will be active.
        console.log(activeTab);

        if (activeTab) {
           jQuery('a[href="' + activeTab + '"]').tab('show');
        }
    });

我希望它能对某人有所帮助。

结果如下:https://jsfiddle.net/neilbannet/ego1ncr5/37/

0赞 Dan Kaiser 12/1/2017 #14

我们使用 jquery 触发器来加载脚本,为我们点击按钮

$(“.class_name”).trigger('点击');

6赞 Mr. Winson 1/7/2018 #15

好吧,这已经在 2018 年了,但我认为迟到总比没有好(就像电视节目中的标题一样),哈哈。下面是我在论文中创建的jQuery代码。

<script type="text/javascript">
$(document).ready(function(){
    $('a[data-toggle="tab"]').on('show.affectedDiv.tab', function(e) {
        localStorage.setItem('activeTab', $(e.target).attr('href'));
    });
    var activeTab = localStorage.getItem('activeTab');
    if(activeTab){
        $('#myTab a[href="' + activeTab + '"]').tab('show');
    }
});
</script>

下面是 bootstrap 选项卡的代码:

<div class="affectedDiv">
    <ul class="nav nav-tabs" id="myTab">
        <li class="active"><a data-toggle="tab" href="#sectionA">Section A</a></li>
        <li><a data-toggle="tab" href="#sectionB">Section B</a></li>
        <li><a data-toggle="tab" href="#sectionC">Section C</a></li>
    </ul>
    <div class="tab-content">
        <div id="sectionA" class="tab-pane fade in active">
            <h3>Section A</h3>
            <p>Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui. Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth.</p>
        </div>
        <div id="sectionB" class="tab-pane fade">
            <h3>Section B</h3>
            <p>Vestibulum nec erat eu nulla rhoncus fringilla ut non neque. Vivamus nibh urna, ornare id gravida ut, mollis a magna. Aliquam porttitor condimentum nisi, eu viverra ipsum porta ut. Nam hendrerit bibendum turpis, sed molestie mi fermentum id. Aenean volutpat velit sem. Sed consequat ante in rutrum convallis. Nunc facilisis leo at faucibus adipiscing.</p>
        </div>
        <div id="sectionC" class="tab-pane fade">
            <h3>Section C</h3>
            <p>Vestibulum nec erat eu nulla rhoncus fringilla ut non neque. Vivamus nibh urna, ornare id gravida ut, mollis a magna. Aliquam porttitor condimentum nisi, eu viverra ipsum porta ut. Nam hendrerit bibendum turpis, sed molestie mi fermentum id. Aenean volutpat velit sem. Sed consequat ante in rutrum convallis. Nunc facilisis leo at faucibus adipiscing.</p>
        </div>
    </div>
</div>


Dont forget to call the bootstrap and other fundamental things 

以下是为您提供的快速代码:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


现在让我们来解释一下:

上面示例中的 jQuery 代码只是获取元素的 使用 jQuery 显示新选项卡时的 href 属性值 .attr() 方法,并通过 HTML5 将其本地保存在用户的浏览器中 localStorage 对象。稍后,当用户刷新页面时,它 检索此数据并通过 .tab('show') 激活相关选项卡 方法。

寻找一些例子?这是给你们的..https://jsfiddle.net/Wineson123/brseabdr/

我希望我的回答能对大家有所帮助。再见!:)

1赞 Hasib Kamal Chowdhury 4/1/2018 #16

重新加载页面并保持预期的后,有一个解决方案 选项卡。

假设保存数据后重定向的 url 为:my_url#tab_2

现在,通过以下脚本,预期的选项卡将保留 选择。

$(document).ready(function(){
    var url = document.location.toString();
    if (url.match('#')) {
        $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
        $('.nav-tabs a').removeClass('active');
    }
});

评论

0赞 Hasib Kamal Chowdhury 4/1/2018
活动类自动分配到锚标记中,因此它被 $('.nav-tabs a').removeClass('active') 删除;此脚本。
0赞 user752746 5/18/2018 #17

有很多方法可以做到这一点。我想出了这个,简短而简单。

  var url = document.location.toString();
  if (url.match('#')) {
    $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
  } 

  $('.nav-tabs a').on('shown.bs.tab', function (e) {
    window.location.hash = e.target.hash;
    if(e.target.hash == "#activity"){
      $('.nano').nanoScroller();
    }
  })
1赞 gkc123 3/24/2019 #18

对于 Bootstrap v4.3.1。请尝试以下操作:

$(document).ready(function() {
    var pathname = window.location.pathname; //get the path of current page
    $('.navbar-nav > li > a[href="'+pathname+'"]').parent().addClass('active');
})
0赞 Asif Anam Khan 10/17/2022 #19

在函数中,我已将类名作为参数表单选项卡接收,并将其保存在本地存储中。在文档就绪函数中,我检查了活动类是否存在。 如果存在,我将该选项卡设置为活动或将基本选项卡设置为活动setTab

$(document).ready(function() {
   var activeTab = localStorage.getItem('activeTab');
   if (activeTab) {
      $('#v-pills-'+activeTab+'-tab').addClass('active');
      $('#v-pills-'+activeTab).addClass('show active');
   } else {
      $('#v-pills-basic-tab').addClass('active');
      $('#v-pills-basic').addClass('show active');
   }
})

function setTab(params) {
  localStorage.setItem('activeTab', params);
}

评论

0赞 Tyler2P 10/20/2022
通过添加有关代码的作用以及它如何帮助 OP 的更多信息,可以改进您的答案。
0赞 Asif Anam Khan 10/22/2022
我添加了更多信息。