下記イメージのように、リストをクリックすると、そのリストの一覧ページに遷移。
遷移先ページ(クリックしたリスト)のリスト背景色を変えたいです。
例)
「伐採」(http://localhost:XXX/blog_category/felling/)をクリック-> 「伐採」一覧ページへ遷移->リストの「伐採」の背景に色を付ける(class付与)
jQuery URLで判定して listにclassを付与しようと以下のURLに対して、
HTML
1 <ul> 2 <li class=""><a class="niwa_post_link" href="http://localhost:XXX/blog">ALL</a></li> 3 <li><a class="niwa_post_link" href="http://localhost:XXX/blog_category/felling/">伐採</a</li>. 4 <li><a class="niwa_post_link" href="http://localhost:XXX/blog_category/prune/">剪定</a</li>. 5 <li><a class="niwa_post_link" href="http://localhost:XXX/blog_category/diary/">庭づくり</a></li> 6 <li><a class="niwa_post_link" href="http://localhost:XXX/blog_category/diary/">日々</a></li> 7 </ul>
以下のようにJQueryを書きました。
jQuery
1$(window).on("load", function () { 2 if (document.URL.match("/blog_category/felling/")) 3 { 4 $(".tab_nav ul li:nth-of-type(2)").addClass("on"); 5 } else if (document.URL.match("/blog_category/prune/")) 6 { 7 $(".tab_nav ul li:nth-of-type(3)").addClass("on"); 8 } else if (document.URL.match("/blog_category/gardening/")) 9 { 10 $(".tab_nav ul li:nth-of-type(4)").addClass("on"); 11 } else if (document.URL.match("/blog_category/diary/")) 12 { 13 $(".tab_nav ul li:last-of-type").addClass("on"); 14 } 15}); 16
URLがマッチした時にliタグの何番目にclass="on"を付与する。といった書き方なのでliタグの順番や数が変わると意図した挙動になりません。
実際のリストはwordpressで管理しており、リストの数は動的に変わります。
(そのカテゴリーに属する記事がない場合は、リストに表示されない。)
PHP
1 <ul> 2 <li class=""><a class="niwa_post_link" href="<?php echo esc_url(home_url('/blog')); ?>">ALL</a> 3 </li> 4 <?php 5 $categories =get_terms('blog_category'); 6 foreach ($categories as $category) { 7 echo '<li><a class="niwa_post_link" href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></li>'; 8 } 9 ?> 10 </ul>
どうすれば、動的に増えるリスト(カテゴリー)に対してURLで判定してclassを付与する。といったことが実現できるでしょうか?
if (document.URL.match("/blog_category/felling/") && li a の要素の中身が"伐採") { $(".tab_nav ul li a 要素の中身が"伐採")に.addClass("on"); }else if (document.URL.match("/blog_category/prune/") && li a の要素の中身が"剪定") { $(".tab_nav ul li a 要素の中身が"剪定")に".addClass("on"); }
上記のように日本語を入れて考えてみたのですが、書き方がわかりませんでした。
またはURL判定以外での実装方法はありますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/04 04:59
2022/11/04 15:04
2022/11/04 15:17 編集
2022/11/07 04:32