やりたいこと
1 別ページへ飛んだ指定の要素だけ開く(アコーディオン)
2 別ページからの遷移後に更新ボタンをおしたら表示しているURLからアンカータグ(#)を消す。
(更新ボタンを押したらアコーディオンを閉じる)
3 別ページ遷移後に要素の位置までスクロールする
やりたいことは上の3つです。
1,2は確実にやりたいことです。
jqueryを使って参考サイトを元に作りましたが上手くいきません。
hash.match...の書き方を理解できていません。
また現状の作りですとindex.html#categorys_q1の状態で
最後のliのリストが開いた状態になってしまいます。
よろしくお願いいたします。
参考サイト
html
1//■リンク元ページ 2<ul class="faq_block"> 3 <li class="s_txt"><a href="./index.html#categorys_q1"><span>カテゴリ1</span></a></li> 4 <li class="s_txt"><a href="./index.html#categorys_q2"><span>カテゴリ2</span></a></li> 5 <li class="s_txt"><a href="./index.html#categorys_q3"><span>カテゴリ3</span></a></li> 6</ul>
html
1//■別ページ 2<ul class="categorys_box"> 3 <li id="categorys_q1"> 4 <div class="qabtn"><p><span>カテゴリー1</span></p></div> 5 <ul class="list answer_box"> 6 <li><p class="subcategory"><span>サブタイトルです</span></p> 7 <p>アンサー</p></li> 8 <li><p class="subcategory"><span>サブタイトルです2</span></p> 9 <p>アンサー2</p></li> 10 <li><p class="subcategory"><span>サブタイトルです3</span></p> 11 <p>アンサー3</p></li> 12 </ul> 13</li> 14 <li id="categorys_q2"> 15 <div class="qabtn"><p><span>カテゴリー3</span></p></div> 16 <ul class="list answer_box"> 17 <li><p class="subcategory"><span>サブタイトルです</span></p> 18 <p>アンサー</p></li> 19 <li><p class="subcategory"><span>サブタイトルです2</span></p> 20 <p>アンサー2</p></li> 21 <li><p class="subcategory"><span>サブタイトルです3</span></p> 22 <p>アンサー3</p></li> 23 </ul> 24 </li> 25 26</ul> 27
css
1//■css 2.list { 3 display: none; 4}
javascript
1//■script 2//ダイレクトリンク 3$(function() { 4 //location.hashで#以下を取得 変数hashに格納 5 var hash = location.hash; 6 //hashの中に#tab~が存在するか調べる。 7 hash = (hash.match(/^#categorys_q\d+$/) || [])[0]; 8 9 //hashに要素が存在する場合、hashで取得した文字列(#tab2,#tab3等)から#より後を取得(tab2,tab3) 10 if($(hash).length){ 11 var tabname = hash.slice(1) ; 12 } else{ 13 // 要素が存在しなければtabnameにtab1を代入する 14 var tabname = "categorys_q1";} 15 //コンテンツを一度すべて非表示にし、 16 $('.list').css('display','none'); 17 18 //一度タブについているクラスselectを消し、 19 $('.qabtn').removeClass('select'); 20 21 var tabno = $('.qabtn#' + tabname).index(); 22 23 //クリックされたタブと同じ順番のコンテンツを表示します。 24 $('.list').eq(tabno).fadeIn(); 25 26 //クリックされたタブのみにクラスselectをつけます。 27 $('.qabtn').eq(tabno).addClass('select') 28 return false; 29 });
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/25 10:12