前提・実現したいこと
ドロップダウンメニュー実装
発生している問題・エラーメッセージ
ドロップダウンリスト実装してるのですが、クリックしたときにメニューボックスが開きません。
ヘッダーのナビゲーションメニューですが768px以上の時は、ホバーした時にメニューボックスが出るように又、スマホ表示での時は(768px以下)ホバーではなくクリックするたびに開閉できるようにしたいです。
該当のソースコード
html
1<ul class="menu"> 2 <li class="menu__item"> 3 <a class="menu__item__a" 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__a" 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__a" 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__a" 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 width: 300px; 7 cursor: pointer; 8 display: block; 9 margin-bottom: 1px; 10 position: relative; 11 list-style: none; 12} 13.menu__item__a { 14 background: #eee; 15 padding: 1.5rem; 16 display: block; 17} 18.menu__item a{ 19 color: #333; 20 text-decoration: none; 21} 22.submenu { 23 background: #fff; 24 display: none; 25} 26.submenu__item { 27 border-bottom: 1px solid #500000; 28 color: #333; 29 padding: 1rem; 30 list-style: none; 31} 32 33@media(max-width: 768px) 34.menu{ 35 display: block; 36} 37.menu__item { 38 background: #520000; 39 cursor: pointer; 40 display: block; 41 margin-bottom: 1px; 42}
js
1const mediaQuery = window.matchMedia('(max-width: 768px)'); 2 handle(mediaQuery); 3 mediaQuery.addListener(handle); 4 function handle(mm) { 5 if (mm.matches) { 6 $(function() { 7 $(".menu__item").on("click", function() { 8 $(".submenu", this).slideToggle(); 9 }); 10 }); 11 } else { 12 $(function() { 13 $('.menu__item').hover(function() { 14 $(".submenu:not(:animated)", this).slideDown(); 15 }, function() { 16 $(".submenu", this).slideUp(); 17 }); 18 }); 19 } 20 }
現在の状況
768px以上では、きちんと実装できていますが、768px以下になった時にクリックしても開閉できません。
何か、js内で書き漏れているのでしょうか。よろしくお願い致します。