多階層アコーディオンメニューのメニューの自動開閉部分がうまくいかず困っております。
下記のような方法で、1段目および2段目が横並び、3段目がリスト形式のアコーディオンメニューを作成しました。
HTML
1 <ul class="accordionBox"> 2 <li><h3>メニュー1</h3> 3 <ul class="subMenu"> 4 <li><h4>サブメニュー1</h4> 5 <ul class="subList"> 6 <li><a href="">サブメニュー1-1コンテンツ</a></li> 7 <li><a href="">サブメニュー1-2コンテンツ</a></li> 8 </ul> 9 </li> 10 <li><h4>サブメニュー2</h4> 11 <ul class="subList"> 12 <li><a href="">サブメニュー2-1コンテンツ</a></li> 13 <li><a href="">サブメニュー2-2コンテンツ</a></li> 14 </ul> 15 </li> 16 <li><h4>サブメニュー3</h4> 17 <ul class="subList"> 18 <li><a href="">サブメニュー3-1コンテンツ</a></li> 19 <li><a href="">サブメニュー3-2コンテンツ</a></li> 20 </ul> 21 </li> 22 </ul><!-- subMenu --> 23 </li> 24 <li><h3>メニュー2</h3> 25 <ul class="subMenu right"> 26 <li><h4>サブメニュー1</h4> 27 <ul class="subList"> 28 <li><a href="">サブメニュー1-1コンテンツ</a></li> 29 <li><a href="">サブメニュー1-2コンテンツ</a></li> 30 </ul> 31 </li> 32 <li><h4>サブメニュー2</h4> 33 <ul class="subList"> 34 <li><a href="">サブメニュー2-1コンテンツ</a></li> 35 <li><a href="">サブメニュー2-2コンテンツ</a></li> 36 </ul> 37 </li> 38 <li><h4>サブメニュー3</h4> 39 <ul class="subList"> 40 <li><a href="">サブメニュー3-1コンテンツ</a></li> 41 <li><a href="">サブメニュー3-2コンテンツ</a></li> 42 </ul> 43 </li> 44 </ul><!-- subMenu --> 45 </li> 46 </ul><!-- accordionBox --> 47
css
1ul.accordionBox>li { 2 width: 33%; 3 padding: 1em 0; 4 display: inline-block; 5 float: left; 6} 7 8ul.subMenu { 9 width: 200%; 10} 11 12ul.subMenu>li { 13 width: 33%; 14 display: inline-block; 15 float: left; 16 padding: 1em 0; 17} 18 19ul.right { 20 margin-left: -100%; 21}
javascript
1$(function(){ 2 $("ul.subMenu").hide(); 3 $("ul.subList").hide(); 4 5 $("ul.accordionBox h3").click(function () { 6 $(this).next("ul.subMenu").slideToggle('fast'); 7 $("ul.subMenu").not((this).next("ul.subMenu")).slideUp(); 8 }); 9 10 $("ul.subMenu h4").click(function () { 11 $(this).next("ul.subList").slideToggle('fast'); 12 }); 13 14}); 15
開いている1段目のメニュー以外(メニュー1を開いていたらメニュー2)をクリックしたときにすでに開いているメニューを閉じるようにしたいと考えています。
slideUp()を使って自動開閉するようにしたいのですが、うまくいかず助言を頂ければと思います。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー