2016-05-20 1 views
1

タブコンテンツ内のサブページへのリンク付きアコーディオンがあります。ページに戻るとアコーディオンタブがアクティブになる

ユーザーがブラウザの戻る矢印またはサブページ上に表示されるホームページリンクのいずれかによって、サブページからホームページにナビゲートすると、そのページを開くためのタブが表示されます。 jsfiddleへ

リンク:

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

コード:

$('#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> 

ありがとうございます。

答えて

2

あなたがアコーディオンをアクティブ1

$('#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'); 
    }); 

のインデックスを保存]をクリックすると、クッキーやlocal storage

を使用してそれを行うことができますが、その後document.ready関数にその属性を読んで、アコーディオンを有効

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

updated fiddle

+0

この種の作品は唯一の問題は、タブを開いて後でウェブサイトに戻っても、まだそのタブが開いているということです。 セカンダリページからホームページに戻るときに開く必要があります - 可能でしょうか? また、このときにブラウザを開いて開いているタブにスクロールさせる方法はありますか?ありがとうございました:) – danik

+0

@danik確かに、あなたがそれを読んだ後にローカルストレージ項目を削除することができますので、次回に再び開くことはできません: 'localStorage.removeItem(" accordion ");'私は答えと[ (https://jsfiddle.net/tqpj1t0w/7/)、 – pumpkinzzz

+0

をチェックしてください。本当にありがとうございます!魅力のように働く。ページに戻ったときに開いているタブにスクロールする方法を知っているのでしょうか? – danik

1

2つの方法があります:

1)IDをヘッダに入れて、アクティブなIDのIDをlocalstorageにして、同じページに戻るときにチェックします。

例:代わりに

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

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

2)使用クエリ文字列と、そのページに戻るに確認してください。

私は助けてくれることを望みます。

+0

localstorageに問題があります。私がパンプキンズの答えに載せたコメントと同じです。クエリ文字列には依然として同じ問題がありますが、クエリ文字列を使用してそれにアプローチする方法はありますか?ありがとう:) – danik

関連する問題