お世話になります。
アコーディオンメニューを作成しましたが、うまく出来ないので、以下2点ご教示いただければと思います。
①現在作成したアコーディオンメニューですが、メニュー1をクリックすると、サブメニューはでてくるのですが、他のメニューも動いてしまいます。(サブメニュー自体は出てきませんが、背景が伸びてきます)メニュー1ならメニュー1のサブメニューだけ動いてほしいです。
②クリックからhoverに変更したいのですが、どこを書き換えたらよいかご教示ください。
宜しくお願い致します。
HTML
1<ul class="menu"> 2 <li class="menu__item"> 3 <a class="menu__item__link js-menu__item__link" href="">メニュー1(クリックで開く)</a> 4 <ul class="submenu"> 5 <li class="submenu__item"> 6 <a href="">サブメニュー1</a> 7 </li> 8 <li class="submenu__item"> 9 <a href="">サブメニュー2</a> 10 </li> 11 <li class="submenu__item"> 12 <a href="">サブメニュー3</a> 13 </li> 14 <li class="submenu__item"> 15 <a href="">サブメニュー4</a> 16 </li> 17 </ul> 18 </li> 19 <li class="menu__item"> 20 <a class="menu__item__link js-menu__item__link" href="">メニュー2(クリックで開く)</a> 21 <ul class="submenu"> 22 <li class="submenu__item"> 23 <a href="">サブメニュー1</a> 24 </li> 25 <li class="submenu__item"> 26 <a href="">サブメニュー2</a> 27 </li> 28 <li class="submenu__item"> 29 <a href="">サブメニュー3</a> 30 </li> 31 <li class="submenu__item"> 32 <a href="">サブメニュー4</a> 33 </li> 34 </ul> 35 </li> 36 <li class="menu__item"> 37 <a class="menu__item__link js-menu__item__link" href="">メニュー3(クリックで開く)</a> 38 <ul class="submenu"> 39 <li class="submenu__item"> 40 <a href="">サブメニュー1</a> 41 </li> 42 <li class="submenu__item"> 43 <a href="">サブメニュー2</a> 44 </li> 45 <li class="submenu__item"> 46 <a href="">サブメニュー3</a> 47 </li> 48 <li class="submenu__item"> 49 <a href="">サブメニュー4</a> 50 </li> 51 </ul> 52 </li> 53 <li class="menu__item"> 54 <a class="menu__item__link js-menu__item__link" href="">メニュー4(クリックで開く)</a> 55 <ul class="submenu"> 56 <li class="submenu__item"> 57 <a href="">サブメニュー1</a> 58 </li> 59 <li class="submenu__item"> 60 <a href="">サブメニュー2</a> 61 </li> 62 <li class="submenu__item"> 63 <a href="">サブメニュー3</a> 64 </li> 65 <li class="submenu__item"> 66 <a href="">サブメニュー4</a> 67 </li> 68 </ul> 69 </li> 70</ul>
CSS
1.menu{ 2 display: flex; 3 justify-content:center; 4} 5.menu__item { 6 background: #ccc; 7 color: #000; 8 cursor: pointer; 9 display: block; 10 margin-bottom: 1px; 11 position: relative; 12 list-style: none; 13} 14.menu__item a{ 15 color: #222; 16 text-decoration: none; 17} 18.menu__item__link { 19 color: #fff; 20 display: block; 21 padding: 1rem; 22} 23.submenu { 24 background: #fff; 25 display: none; 26} 27.submenu__item { 28 border-bottom: 1px solid #5200b7; 29 color: #222; 30 padding: 1rem; 31 list-style: none; 32}
css
1@media(max-width:780px 2.menu{ 3 display: block; 4} 5.menu_item { 6 background: #5200b7; 7 color: #fff; 8 cursor: pointer; 9 display: block; 10 margin-bottom: 1px; 11 position: relative; 12} 13.menu_item 14.menu_item__link { 15 color: #fff; 16 display: block; 17 padding: 1rem; 18} 19 20.submenu { 21 background: #fff; 22 display: none; 23} 24.submenu_item { 25 border-bottom: 1px solid #5200b7; 26 color: #222; 27 padding: 1rem; 28}
https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
js
1$(function(){ 2 $('.js-menu__item__link').each(function(){ 3 $(this).on('click',function(){ 4 $("+.submenu",this).slideToggle(); 5 return false; 6 }); 7 }); 8}); 9