###やりたいこと
サイトメニューにて、input, label, CSS
で制御しているアコーディオンメニューを作っています。
カレントページを表示中の時に、該当するメニューにclass="current"
の付与を与えることに成功したのですが、class="current"
がついている時には該当のチェックボックス <input id="accSP-subOpen-home" class="acc-subOpen" type="checkbox">
にchecked
を付与してアコーディオンを最初から開いた状態にしたいのですが、自分の記述ではなんの変化もなく、checked
は付与さえません。
###コード一覧
html
1<div id="mainNavBox"> 2<ul class="contents"> 3 <li class="item"> 4 <input id="accSP-subOpen-home" class="acc-subOpen" type="checkbox"> 5 <label class="acc-unshown" for="accSP-subOpen-home">Home</label> 6 <ul class="subNav"> 7 <li><a href="top.html">トップページ</a></li> 8 <li><a href="news.html">お知らせ一覧</a></li> 9 <li><a href="release.html">リリースノート一覧</a></li> 10 </ul> 11 </li> 12 <li class="item"> 13 <input id="accSP-subOpen-home" class="acc-subOpen" type="checkbox"> 14 <label class="acc-unshown" for="accSP-subOpen-home">マイページ</label> 15 <ul class="subNav"> 16 <li><a href="profile.html">プロフィール</a></li> 17 <li><a href="keiyaku.html">契約状況</a></li> 18 </ul> 19 </li> 20</ul> 21</div>
css
1.mainNavBox { 2 background-color: #23282d; 3 position: fixed; 4 max-width: 200px; 5 width: 100%; 6 height: 100%; 7} 8.mainNavBox ul.contents { margin: 12px 0; } 9.mainNavBox ul.contents>li.item { 10 min-height: 34px; 11 position: relative; 12} 13.mainNavBox ul.contents>li.item>a, 14.mainNavBox ul.contents>li.item>label, 15.mainNavBox ul.contents>li.item>ul.subNav>li>a { 16 cursor: pointer; 17 color: #eee; 18 display: block; 19 font-size: 1.4rem; 20 line-height: 1.3; 21 padding: 9px 15px; 22} 23 .mainNavBox ul.contents>li.item>a:hover, 24 .mainNavBox ul.contents>li.item>label:hover, 25 .mainNavBox ul.contents>li.current>a, 26 .mainNavBox ul.contents>li.current>label { background-color: #fd8a39; } 27 28/*=============== ul.subNab/// accordion ===============*/ 29.mainNavBox ul.contents>li.item>input.acc-subOpen { display: none; } 30.mainNavBox ul.contents>li.item>label.acc-unshown { 31 display: block; 32 margin-bottom: 1px; 33} 34.mainNavBox ul.contents>li.item>ul.subNav { 35 height: 0; 36 opacity: 0; 37 visibility: hidden; 38} 39.mainNavBox ul.contents>li.item>ul.subNav>li {} 40.mainNavBox ul.contents>li.item>ul.subNav>li>a { 41 color: rgba(240,245,250,.7); 42 font-size: 1.3rem; 43 line-height: 1.4; 44 padding: 6px 12px; 45} 46 .mainNavBox ul.contents>li.item>ul.subNav>li>a:hover { color: #fd8a39; } 47 .mainNavBox ul.contents>li.item>ul.subNav>li.current>a { color: #fff; } 48 49.mainNavBox ul.contents>li.item>input.acc-subOpen:checked + label.acc-unshown + ul.subNav { 50 background-color: #32373c; 51 height: auto; 52 opacity: 1; 53 padding: 7px 0 8px; 54 visibility: visible; 55} 56/*---------- accordion/// icon ----------*/ 57.mainNavBox ul.contents>li.item>label.acc-unshown::after { 58 display: block; 59 line-height: 2; 60 height: 34px; 61 width: 34px; 62 top: 0; 63 right: 0; 64 position: absolute; 65 -webkit-transition: all 0.35s; 66 transition: all 0.35s; 67 text-align: center; 68} 69.mainNavBox ul.contents>li.item>input.acc-subOpen[type=checkbox] + label::after { 70 content: '+'; 71} 72.mainNavBox ul.contents>li.item>input.acc-subOpen[type=checkbox]:checked + label::after { 73 transform: rotate(315deg); 74}
js
1//メニュー現在地点の設定 2$(function(){ 3 $('.mainNavBox ul li a').each(function(){ 4 var $href = $(this).attr('href'); 5 if(location.href.match($href)) { 6 $(this).parent().addClass('current'); 7 $(this).parent().parent().parent().addClass('current'); 8 } else { 9 $(this).parent().removeClass('current'); 10 } 11 }); 12});
###やってみたこと
以下、いろいろ調べたものを記述したのですがjQueryへの知識が浅いため見当違いなことをしているのかもしれません。
js
1//current-open 2$(function(){ 3 $('.acc-subOpen').change(function() { 4 if ($('li.current').prop("checked")) { 5 $('li.current').prop("checked", true); 6 } else { 7 $('li.current').prop("checked", false); 8 } 9 }); 10});
###見た目
現在
目標
以下、クラス名が付与されている様子
css
1<div id="mainNavBox"> 2<ul class="contents"> 3 <li class="item current"> 4 <input id="acc-subOpen-home" class="acc-subOpen" type="checkbox"> 5 <label class="acc-unshown" for="acc-subOpen-home">Home</label> 6 <ul class="subNav"> 7 <li class="current"><a href="./top.html">トップページ</a></li> 8 <li><a href="#">お知らせ一覧</a></li> 9 <li><a href="#">リリースノート一覧</a></li> 10 </ul> 11 </li> 12 <li class="item"> 13 <input id="accSP-subOpen-home" class="acc-subOpen" type="checkbox"> 14 <label class="acc-unshown" for="accSP-subOpen-home">マイページ</label> 15 <ul class="subNav"> 16 <li><a href="profile.html">プロフィール</a></li> 17 <li><a href="keiyaku.html">契約状況</a></li> 18 </ul> 19 </li> 20</ul> 21</div>
回答2件
あなたの回答
tips
プレビュー