jQueryを使って現在見ているページのナビゲーションにクラス名を付与したいです。
jQueryを使って現在見ているページのナビゲーションにクラス名を付けてどのページを見ているかわかるようにしています。
例えば、会社概要のページを見ていると
<li><a href="../outline/">会社概要</a></li> ↓ <li class="current"><a href="../outline/">会社概要</a></li> のようにクラス名が付与されます。HTML
<ul id="menu"> <li><a href="./">トップページ</a></li> <li><a href="../business/">事業内容</a></li> <li><a href="../outline/">会社概要</a></li> <li><a href="../outline/message/">ごあいさつ</a></li> <li><a href="../access/">アクセス</a></li> </ul>
jQuery
$(function(){ $('#menu li a').each(function(){ var $href = $(this).attr('href'); if(location.href.match($href)) { $(this).parent('li').addClass('current'); } else { $(this).parent('li').removeClass('current'); } }); });
開いているページとマッチすれば、a要素の親であるli要素に「current」というクラスを追加します。
そうでなければ、.currentは削除するというものです。
困っていること
現状のjQueryの書き方だと
下記のように1階層入っただけのページはクラス名が付与されるのですが、
下記のように2階層入ったページになるとクラス名が付与されません。
<li><a href="../outline/message/">ごあいさつ</a></li>また、トップページで階層がない場合もクラス名が付与されません。
<li><a href="./">トップページ</a></li>階層が2階層目3階層目と深くなっていった場合もクラス名が付与されるようにしたいです。
しして、できればトップページも認識してクラス名が付与されるようにしたいです。
ご協力いただけますと幸いです。
宜しくお願いいたします。
