Jquery初心者です。
多階層のアコーディオンメニューを作っているのですが、
1階層目をクリックして2階層目を開いた後に、
2階層目のメニューをクリックして、3階層目を開こうとすると、すべて閉じてしまいます。
どうもうまくいかず、ご助言いただいれば幸いです。
該当のソースコード
HTML
1<ul id="menu"> 2 <li><span>メニュー1</span> 3 <ul class="sec"> 4 <li><span>メニュー1-1</span></li> 5 <ul class="sec"> 6 <li><a href="#">メニュー1-1-1</a></li> 7 <li><a href="#">メニュー1-1-2</a></li> 8 <li><a href="#">メニュー1-1-3</a></li> 9 </ul> 10 <li><a href="#">メニュー1-2</a></li> 11 <li><a href="#">メニュー1-3</a></li> 12 </ul> 13 </li> 14</ul>
CSS
1ul{ 2 margin-bottom:35px; 3 } 4li{ 5 border-bottom:solid 1px #F2F2F2; 6 } 7li a, 8li span{ 9 display:block; 10 pointer-events: auto !important; 11 font-size: 14px; 12 text-decoration:none; 13 padding:15px 0; 14 } 15li span{ 16 font-size: 14px; 17 cursor:pointer; 18 } 19li span:hover{ 20 opacity:0.8; 21 } 22li a:before, 23li span:before{ 24 display:inline-block; 25 content:''; 26 width:14px; 27 height:14px; 28 border-radius:7px; 29 margin-right:9px; 30 vertical-align:middle; 31 background: url(common/images/icon_menu_ar1.png) center center no-repeat; 32 } 33ul.sec{ 34 display:none; 35 margin:0 0 10px 25px; 36 } 37.sec li{ 38 border-bottom:0; 39 } 40.sec li a{ 41 padding:15px 0; 42 } 43.sec li a:before{ 44 display:inline-block; 45 content:''; 46 width:14px; 47 height:14px; 48 border-radius:7px; 49 margin-right:9px; 50 vertical-align:middle; 51 background: url(common/images/icon_menu_ar2.png) center center no-repeat; 52 }
Javascript
1$(function($) { 2 $('#menu span').on('click', function() { 3 $(this).next('ul:not(:animated)').slideToggle(); 4 $(this).children('span').toggleClass('open'); 5 // 他のサブメニューを閉じる 6 $('.sec').not($(this).next('.sec')).slideUp(); 7 $(this).children('span').not($(this).children('span')).removeClass('open'); 8 }); 9});
試したこと
「// 他のサブメニューを閉じる」以下2行を削除するなどしてみましたが、
現象は変わりませんでした。
他のメニューをクリックすると、自動で開いているメニューを閉じるという今の状態は維持したいと思っています。
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/26 08:48
2018/01/26 08:54
2018/01/26 09:22
2018/01/26 11:45
2018/01/26 12:33