jQueryを使ってメガメニューを作成したいのですが、JSの部分がどおしても上手くいきません。
下記のJSを書いており、現状メニューをクリック後、別のメニューをクリックしても、
最初にクリックしたメニューが非表示となりません。
.fadeToggleを使っているので、非表示にしたいメニューをもう一度クリックすれば、非表示にはなるのですが、
よく見る一般的なメガメニューのように、他のメニューをクリックした時に、
自動的にそれ意外のメニューを非表示にできればと考えております。
js
1$(".header__sub-nav").hide();
いろいろ試しており、上記のコードを最初に加えることで、非表示にすることは可能となりました。
ただ、このコードだと、例えばMENU01を2回クリックしても、非表示にできません...
つまり一度メガメニューを開くと「メガメニューが表示されていない状態」に戻すことができません。
一般的なメガメニューを作成するにはどのようにコードを変更すればよろしいでしょうか。
codepenで同じ状態を再現しております。
https://codepen.io/jyoze/pen/bGWzXpG
html
1 <header class="header"> 2 <div class="header__inner"> 3 <div class="header__right"> 4 <nav class="header__nav"> 5 <ul> 6 <li><a href="#sub1">MENU01</a></li> 7 <li><a href="#sub2">MENU02</a></li> 8 <li><a href="#sub2">MENU03</a></li> 9 </ul> 10 </nav> 11 </div> 12 </div> 13 14 <div class="header__sub-nav" id="sub1"> 15 <h2 class="no-style">サブナビ01</h2> 16 <ul> 17 <li><a href="">MENU</a></li> 18 <li><a href="">MENU</a></li> 19 <li><a href="">MENU</a></li> 20 <li><a href="">MENU</a></li> 21 </ul> 22 </div> 23 <div class="header__sub-nav" id="sub2"> 24 <h2 class="no-style">サブナビ03</h2> 25 <ul> 26 <li><a href="">MENU</a></li> 27 <li><a href="">MENU</a></li> 28 <li><a href="">MENU</a></li> 29 <li><a href="">MENU</a></li> 30 </ul> 31 </div> 32 <div class="header__sub-nav" id="sub3"> 33 <h2 class="no-style">サブナビ03</h2> 34 <ul> 35 <li><a href="">MENU</a></li> 36 <li><a href="">MENU</a></li> 37 <li><a href="">MENU</a></li> 38 <li><a href="">MENU</a></li> 39 </ul> 40 </div> 41 42 </header>
scss
1 2.header { 3 &__inner { 4 position: relative; 5 display: flex; 6 align-items: center; 7 justify-content: space-between; 8 width: calc(100% - 30px); 9 padding: 15px 15px; 10 margin: 0 auto; 11 box-sizing: content-box; 12 line-height: 1; 13 } 14 &__nav { 15 ul { 16 display: flex; 17 justify-content: flex-end; 18 li:not(:last-child) { 19 margin-right: 20px; 20 } 21 } 22 a { 23 color: #000; 24 } 25 } 26 &__sub-nav { 27 display: none; 28 position: absolute; 29 // bottom: 0; 30 left: 0; 31 z-index: 9999; 32 width: 100vw; 33 background-color: #fff; 34 } 35}
js
1 <script> 2 $(function(){ 3 $('.header__nav li a').on('click', function () { 4 $($(this).attr("href")).fadeToggle(); 5 if( $("[href^='#']") ){ 6 return false; 7 } 8 }); 9 }); 10 </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/13 03:40
2021/08/13 12:26
2021/08/13 16:51
2021/08/14 00:21
2021/08/14 03:05