同一ページ 別タブ内アンカーリンクを飛ばしたい。Boot strap編
wordpress にて某テーマのタブにページ内リンクを設置したいです。
Javascriptで飛ばしたいのですが、tabの既存のHTMLはそのまま生かして(テンプレートのため)
Javascriptの追加のみで実現できないでしょうか?
HTML
クラスの追加などは、
<a href="#book" data-toggle="tab" role="tab" class="nav-link" >申し込みはこちら0</a>
<h3 id="book">お申し込みはこちら</h3>
この2行のみで実現したいです。
HTML
1<div class="tours-tabs"> 2 <ul class="nav nav-tabs"> 3 <li class="active"><a href="#tabdescription" data-toggle="tab">あああ</a></li> 4 <li><a href="#tabatab0" data-toggle="tab">いいい</a></li> 5 <li><a href="#tabatab1" data-toggle="tab">ううう</a></li> 6 <li><a href="#tabatab2" data-toggle="tab">えええ</a></li> 7 </ul> 8<div class="tab-content"> 9 <div class="tab-pane in active" id="tabdescription"> あああ 10 <a href="#book" data-toggle="tab" role="tab" class="nav-link" >申し込みはこちら0</a> 11 </div> 12 <div class="tab-pane fade" id="tabatab0">いいい</div> 13 <div class="tab-pane fade" id="tabatab1">ううう</div> 14 <div class="tab-pane fade" id="tabatab1">えええ 15 <h3 id="book">お申し込みはこちら</h3> 16 </div> 17 18
Javascript
大変恐縮ですが、参考サイトからコピーしたものを貼り付け、検討違いのコードかもしれないです。
Javascript
1 2 function OnLinkClick(a_name) { 3 //panel_group 4 var elements = document.getElementsByName( "tabs" ) ; 5 //var target = $(document).getElementById("panel-2-ctrl"); 6 elements[0].checked = true ; 7 //window.location.hash= a_name; 8 } 9 10const tabChange = (screlm) => { 11 $('.tab_link').on('click', function (e) { 12 e.preventDefault(); 13 const targetHref = $(this).attr('data-anchor'); 14 // 表示イベント後にアンカー位置へ瞬間移動 15 // shown.bs.tab イベントを拾わないと、非表示のタブは display: none; になっているので .offset().top で要素の位置が正しく取得できない 16 const targetTabId = `#tab${targetHref.charAt(0).toUpperCase()}${targetHref.slice(1)}` 17 $(targetTabId).on('shown.bs.tab', function () { 18 let position = Math.ceil($(`#${targetHref}`).offset().top); 19 $(screlm).animate({ scrollTop: position }, 0); 20 $(this).off('shown.bs.tab'); 21 }); 22 // タブ表示 23 $(`.nav-item a[href="#${targetHref}"]`).tab('show'); 24 return false; 25 }); 26 27
試したこと (クラスを追加した場合)
クラスを追加すれば、できるのですが、クラスを追加せずに実現したいです。
HTML
1<div class="tours-tabs"> 2 <input id="panel-1-ctrl" class="panel-radios" type="radio" name="tab-radios" checked> 3 <input id="panel-2-ctrl" class="panel-radios" type="radio" name="tab-radios"> 4 <ul id="tabs-list" class="nav nav-tabs"> 5 <li id="li-for-panel-1" class="active"><label class="panel-label" for="panel-1-ctrl">あああ</label></li> 6 7 8
補足情報
今回PCでもスマホでもタブを正常にリンクできたら嬉しいです。
あなたの回答
tips
プレビュー