クリックした際に下の階層を表示できるドロップダウンメニューをつくりたいと思っています。
質問1
toggle()で表示非表示を切り替えてみたのですが、となりの子階層のborderまで表示されてしまいます。
また、なにもない領域をクリックできてしてしまうのを改善できないでしょうか。
質問2
クリックして子階層が表示された状態で、となりの項目(.list-item)をクリックするとその子階層を表示したいと思い、
each()を使ってみたのですが、今度はクリックしても子階層が閉じなくなってしまいました。どのようにすればよいでしょうか。
よろしくお願いします。
HTML
1<nav class="navigation"> 2 <ul> 3 <li class="list-item">ITEM1 4 <div class="second-level"> 5 <a href="#">dummy</a> 6 <a href="#">dummy</a> 7 <a href="#">dummy</a> 8 </div> </li> 9 <li class="list-item">ITEM2 10 <div class="second-level"> 11 <a href="#">dummy</a> 12 <a href="#">dummy</a> 13 <a href="#">dummy</a> 14 </div> </li> 15 ~~~
CSS
1.navigation { 2 background: var(--pink); 3 border: 1px solid #aaa; 4 height: 40px; 5} 6.navigation > ul { 7 width: 800px; 8 margin: 0 auto; 9 text-align: center; 10 display: flex; 11 font-size: 1.6rem; 12 color: white; 13 justify-content: space-around; 14} 15.navigation .list-item { 16 display: inline-block; 17 line-height: 38px; 18 border-left: 1px solid #ccc; 19 padding-left: 20px; 20 cursor: pointer; 21} 22.list-item .second-level { 23 display: none; 24 background-color: #aaaaff; 25 margin: 0 -20px; 26} 27.second-level a { 28 display: block; 29}
jQuery
1$(function(){ 2 3var $naviItem = $('.navigation .list-item'); 4 5$naviItem.click(function(){ 6 7$naviItem.each(function(){ 8 $(this).find('.second-level').hide(); 9}); 10 11$(this).find('.second-level').toggle(); 12 13 14});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/24 04:36
2020/09/24 08:28