简体   繁体   English

返回页面时,保持accordion选项卡处于活动状态

[英]Keep accordion tab active when returned to page

I have an accordion with links to subpages within the tabs content. 我有一个手风琴,上面有标签内容中的子页面链接。

When the user navigates back from the subpage unto the homepage either by the browser's back arrow, or by a homepage link that will be on the subpage I would like the tab that led them to that page to be open. 当用户通过浏览器的后退箭头或子页面上的主页链接从子页面导航回主页时,我希望导致他们访问该页面的选项卡打开。

link to the jsfiddle: 链接到jsfiddle:

https://jsfiddle.net/tqpj1t0w/4/ https://jsfiddle.net/tqpj1t0w/4/

Code: 码:

$('#accordion').find('.accordion-toggle').click(function (){

  //Expand or collapse this panel
  $(this).next().toggleClass('active');

  //Hide the other panels
  $(".accordion-content").not($(this).next()).removeClass('active');});



<div id="accordion">
      <section>
        <h2 class="accordion-toggle">test 1</h2>
          <div class="accordion-content">
        <a href="#">subpage link</a>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
                tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
                consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
                cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
                proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
           </div>
      </section>
      <section>
        <h2 class="accordion-toggle">test 2</h2>
          <div class="accordion-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
                tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
                consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
                cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
                proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
           </div>
      </section>
      <section>
        <h2 class="accordion-toggle">test 3</h2>
          <div class="accordion-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
                tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
                consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
                cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
                proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
           </div>
      </section>

Thank you. 谢谢。

You can do it using cookies or local storage 您可以使用cookie或本地存储来完成

When clicking an accordion save the index of the active one 单击手风琴时保存活动的索引

$('#accordion').find('.accordion-toggle').click(function (){

      localStorage.setItem("accordion", $(this).closest('section').index());
      localStorage.removeItem("accordion");
      //Expand or collapse this panel
      $(this).next().toggleClass('active');

      //Hide the other panels
      $(".accordion-content").not($(this).next()).removeClass('active');
  });

then on document.ready function read that attribute and activate the accordion 然后在document.ready函数上读取该属性并激活手风琴

var activeAccordion = localStorage.getItem("accordion");
  if(activeAccordion){
    $('#accordion section:eq('+activeAccordion+') .accordion-content').toggleClass('active');
  }

see updated fiddle 看到更新的小提琴

There is a two way : 有两种方式:

1) you just put the id to header and get the id of Active tab in localStorage and check when you are returning to that same page. 1)您只需将id放入标题并获取localStorage中Active标签的id,并检查何时返回同一页面。

ex: 例如:

localStorage.setItem("activeTab", "test1");

 if(localStorage!=null)
 {
var activeTabId =  localStorage.getItem("activeTab")
$('#accordion').find(activeTabId).addClass('active');
}

2) use query-string instead and check when to returning to that page. 2) 改用query-string并检查何时返回该页面。

I hope it help. 我希望它有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM