前提・実現したいこと
jQuery(3.4.1)でカレントナビ表示を実現させたいのですが、href属性が同じaタグが2つ以上ある場合、最初のaタグのみにクラスが付与されてしまいます。
最初だけでなく、href属性が同じaタグの全てにクラスを付与したいのですが、
どのように書けばいいのでしょうか。
現状使わせていただいているコードは以下から拝借しました。
https://blog.looseknot.jp/html/globalnavi_current.html
よろしくお願いいたします。
該当のソースコード
jQuery
1$(function() { 2 var url = location.pathname; 3 var url_dir_length = url.split('/').length; 4 var url_file_name = url.split('/')[url_dir_length]; 5 var url_dir_name = url.split('/')[url_dir_length - 1]; 6 var navi = $("#nav a"); 7 8 navi.each(function(){ 9 var href = $(this).attr("href"); 10 var href_dir_length= $(this).attr("href").split('/').length; 11 if (url_dir_length == href_dir_length) { 12 if (url_dir_name == '') { 13 var href_dir_name = href.split('/')[href_dir_length - 1]; 14 var href_page_name = href.split('/')[href_dir_length]; 15 if ((url_file_name == href_page_name) || (url_file_name=='' && href_page_name=='index.html')) { 16 $(this).addClass("is-current"); 17 return false; 18 } 19 } else { 20 var href_dir_name = href.split('/')[href_dir_length - 1]; 21 if (url_dir_name == href_dir_name) { 22 $(this).addClass("is-current"); 23 return false; 24 } 25 } 26 } 27 }); 28});
html
1<nav> 2 <ul id="nav"> 3 <li> 4 <a href="/">index</a> 5 </li> 6 <li> 7 <a href="/about.html">about</a> 8 </li> 9 <li> 10 <a href="/contact.html">contact</a> 11 </li> 12 <li> 13 <p><a href="/works-1.html">works</a> //ここが同一URL 14 <ul> 15 <li> 16 <a href="/works-1.html">works-1</a> //ここが同一URL 17 </li> 18 <li> 19 <a href="/works-2.html">works-2</a> 20 </li> 21 </ul> 22 </li> 23 </ul> 24</nav>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 07:35