【问题标题】:how to prevent jquery ui default first tab to active when refresh刷新时如何防止jquery ui默认第一个选项卡处于活动状态
【发布时间】:2015-08-03 18:06:25
【问题描述】:

我使用jquery ui 作为我网站的导航,在每个选项卡中我放置了一些指向基本上由ajax 动态加载的页面的链接。除了一个问题,一切都很好!

问题

我的问题是,当我单击第一个选项卡以外的其他选项卡并从浏览器中单击刷新时,它会将我带回默认的第一个选项卡。正如我所说,我在这些选项卡中使用了链接,这些链接应该是我网站的导航,但是这个问题不好!例如,如果我单击选项卡two,然后单击其中的任何一个链接,即SubMenu 1.1,它的工作和加载内容正常,但是当我点击浏览器刷新按钮时会发生什么,它会让我回到选项卡one,尽管我我还在标签two SubMenu 1.1 这是代码。

  <div id="tabs">
        <ul>
            <li><a href="#fragment-1"><span>One</span></a></li>
            <li><a href="#fragment-2"><span>Two</span></a></li>
            <li><a href="#fragment-3"><span>Three</span></a></li>
        </ul>
     <div id="fragment-1">
        <ul>
            <li><a href="#SubMenu 1.1">SubMenu 1.1</a></li>
            <li><a href="#SubMenu 1.2">SubMenu 1.2</a></li>
            <li><a href="#SubMenu 1.3">SubMenu 1.3</a></li>
            <li><a href="#SubMenu 1.4">SubMenu 1.4</a></li>
            <li><a href="#SubMenu 1.5">SubMenu 1.5</a></li>
        <ul>
     </div>
     <div id="fragment-2">
        <ul>
            <li><a href="#SubMenu 2.1">SubMenu 2.1</a></li>
            <li><a href="#SubMenu 2.2">SubMenu 2.2</a></li>
            <li><a href="#SubMenu 2.3">SubMenu 2.3</a></li>
            <li><a href="#SubMenu 2.4">SubMenu 2.4</a></li>
            <li><a href="#SubMenu 2.5">SubMenu 2.5</a></li>
       </ul>
     </div>
     <div id="fragment-3">
       <ul>
            <li><a href="#SubMenu 3.1">SubMenu 3.1</a></li>
            <li><a href="#SubMenu 3.2">SubMenu 3.2</a></li>
            <li><a href="#SubMenu 3.3">SubMenu 3.3</a></li>
            <li><a href="#SubMenu 3.4">SubMenu 3.4</a></li>
            <li><a href="#SubMenu 3.5">SubMenu 3.5</a></li>
       </ul>
      </div>
  </div>

也使用了本地存储,但尽管浏览器支持 firefox 39 chrome 43Ie 11,但它无法正常工作

if(window.localStorage!==undefined){
   var selected=0;
   if(localStorage.currentTab){
      selected=Number(localStorage.currentTab)
   }else{
      localStorage.currentTab=0;
   }

   $("#tabs").tabs({ 
      selected: selected,
      select: function(event, ui) {
      localStorage.currentTab=ui.index
   }
   });//Do something
 }else{
      alert('Your browser is outdated therefore not supported local stroage!');
 }

也从jquery ui 的官方网站使用了这个不同的值,但没有按我的意愿工作。

  $( ".selector" ).tabs({
    active: 1
  });

我们将不胜感激。谢谢

【问题讨论】:

    标签: javascript jquery html ajax jquery-ui


    【解决方案1】:

    使用active 属性而不是selected

    还有activate 而不是selected 处理程序。

    ui.index 也未定义,因为该属性在 ui 对象上不可用。

    改为使用$(ui.newTab[0]).index() - jQuery 对象为您提供当前的li,您可以获得它的索引。

    $("#tabs").tabs({ 
       active: selected,
       activate: function(event, ui) {
         localStorage.currentTab = $(ui.newTab[0]).index()
       }
    });
    

    始终使用开发人员工具来调试或检查任何错误。这让生活更轻松。

    jSFiddle

    【讨论】:

    • 感谢您的支持,我会在一分钟内检查并告诉您会发生什么希望这有效。
    • 感谢它的工作,但我还有一个问题!我可以在我的主标签onetwothree 中使用页面链接,所以当点击它们时也会加载默认内容。因为主标签与href 链接到子链接id,我不知道该怎么做?
    • 你能举个例子吗??
    • 例如,我想将 url #browse.php 放在主选项卡 one 中,正如您在上面的代码中看到的那样,他已经有一个通过 id 链接到其子选项卡的 url,我想放#browse.php 而不是 #fragment-1。我试图把它放在那里,但没有奏效。或将父选项卡链接到子选项卡的任何其他方式,因此 url 变得免费,因此我可以将我想要的 url 放在那里。
    • 是的!但它只显示子选项卡而不加载页面。正如我之前所说的那样,我想放置 browse.php 而不是 ##fragment-1 的原因是因为我想在单击这些选项卡以及显示子选项卡时加载该页面。你明白我要做什么了吗?
    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 2017-05-18
    • 2013-02-28
    • 2011-05-17
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多