2

我有这个 jquery 代码:

<script type="text/javascript">
  $(document).ready(function() {
    $(".tabLink").each(function(){
      $(this).click(function(){
        tabeId = $(this).attr('id');
        $(".tabLink").removeClass("activeLink");
        $(this).addClass("activeLink");
        $(".tabcontent").addClass("hide");
        $("#"+tabeId+"-1").removeClass("hide")   
        return false;     
      });
    });  
  });
</script>

我正在尝试这样做,以便在使用以下代码刷新页面时记住该选项卡:

<script type="text/javascript">
  $(document).ready(function() {
    $(".tabLink").each(function(){
      $(this).click(function(){
        localStorage.selectedTab = $(this).index() + 1;
        tabeId = $(this).attr('id');
        $(".tabLink").removeClass("activeLink");
        $(this).addClass("activeLink");
        $(".tabcontent").addClass("hide");
        $("#"+tabeId+"-1").removeClass("hide")   
        return false;     
      });
    });  

    // search for local storage
    if (localStorage.selectedTab) {
      $(".tabLink:eq(" + (localStorage.selectedTab - 1) + ")").click();
    }
  });
</script>

HTML:

<div class="tab-box">
        <a href="javascript:;" class="tabLink activeLink" id="viewcustomer">View Customer</a> 
        <a href="javascript:;" class="tabLink activeLink" id="viewresellercustomers">View Reseller Customer</a> 
        <a href="javascript:;" class="tabLink activeLink" id="viewsalesmancustomer">View Salesman Customer</a> 
        <a href="javascript:;" class="tabLink" id="archivedcustomers">View Archived Customer</a> 
        </div>

<div class="tabcontent" id="viewcustomer-1">
content...
</div>.....

它工作正常,但选项卡位于多个页面上,因此如果我转到不同的页面,则会选择不同的选项卡,因为它试图记住最后选择的选项卡。

我怎样才能让它记住每页最后选择的标签?

4

2 回答 2

1

localStorage坚持选择:

$(document).ready(function () {

    function activate(tab) {
        // switch all tabs off
        $(".active").removeClass("active");

        // switch this tab on
        tab.addClass("active");

        // slide all content up
        $(".content").slideUp();

        // slide this content up
        var content_show = tab.attr("title");
        $("#" + content_show).slideDown();
    }

    if (localStorage) { // let's not crash if some user has IE7
        var index = parseInt(localStorage['tab'] || '0');
        activate($('a.tab').eq(index));
    }

    // When a link is clicked
    $("a.tab").click(function () {
        if (localStorage) localStorage['tab'] = $(this).closest('li').index();
        activate($(this));
    });

});
于 2013-09-18T15:19:11.357 回答
0

您可以创建将 URL 链接到选定选项卡的地图,例如

tabStorage = { 
 "page_url_1" : 1,
 "page_url_2" : 3
}

您可以使用 获取当前页面的 URL winow.location

然后使用JSON.stringify/保存/检索它JSON.parse,因为localStorage只保留键/值对,而不是对象。这里的关键是'tabs',值 - 地图的一个striggered表示。

$(document).ready(function() {
   var tabStorage = (localStorage && localStorage.tabs) ? JSON.parse( localStorage.tabs ) : {};
   $(".tabLink").click(function(){
      tabStorage[ window.location ] =  $(".tabLink").index( this );
      if(localStorage) {
          localStorage.tabs = JSON.stringify( tabStorage );
      }
   });

   if (tabStorage[ window.location ]) {
      $(".tabLink").eq( tabStorage[ window.location ] ).trigger('click');
   }
});
于 2013-09-18T15:23:57.580 回答