提问者:小点点

导航栏不向右切换


在我的导航栏中,我发现JS脚本的切换不像列表看起来那样正确。 我的意思是:如果我点击第二行中的Item2,它会显示一行中的Item,Item3,Item4。 但那是不对的,因为它只能显示物品。 此外,如果我点击Item,它应该只显示ItemX和ItemY,但它也显示了传统的Item3和Item4.。。

我也看到了一个问题,如果你点击其中的一个,父李的完全消失。 所以当你点击第2项时,其他项就消失了(第3项和第4项)。

那么,我怎样才能让正好的孩子李氏敞开心扉,而兄弟李氏不会消失呢?

非常感谢。

null

$('li').on('click', function(e) {
  $(this).children('ul').toggle();
  $(this).siblings('li').find('ul').hide();

  e.stopPropagation();
});
        .sub-menu {
display: none;
}

ul.menu {
    list-style: none;
    width: 100%;
    background-color: #224490;
}

li {
    display:inline-block;
    cursor:pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu">
      <li >Item
        <ul class="sub-menu">
          <!--This works fine-->
          <li>Item2
            <ul class="nested sub-menu">
              <!--Here is the problem-->
              <li>Item
                <ul class="nested sub-menu">
                  <!--Here is the problem too-->
                  <li>ItemX</li>
                  <li>ItemY</li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
              Item3
          </li>
          <li>
              Item4
          </li>
        </ul>
      </li>
</ul>
      <ul>
       <li >
            <table>
              <tr>
                <th>Month</th>
                <th>Savings</th>
                <th>Infos</th>
              </tr>

            </table>

      </li>
</ul>

null


共1个答案

匿名用户

项3和项4是项2的兄弟姐妹。 如果你透露的是孩子,第2项的高度就会增加,因此推低了它的兄弟姐妹内容。 在子菜单上使用display:flex;(而不是display:block),如下所示:

null

$('li').on('click', function(e) {
  $(this).children('ul').toggleClass('shown');
  $(this).siblings('li').find('ul').removeClass('shown');

  e.stopPropagation();
});
ul.sub-menu {
  display: none;
}

ul.menu {
    list-style: none;
    width: 100%;
    background-color: #224490;    
}

ul.sub-menu.shown {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
}

li {
    display:inline-block;
    cursor:pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu">
      <li >Item
        <ul class="sub-menu">
          <!--This works fine-->
          <li>Item2
            <ul class="nested sub-menu">
              <!--Here is the problem-->
              <li>Item
                <ul class="nested sub-menu">
                  <!--Here is the problem too-->
                  <li>ItemX</li>
                  <li>ItemY</li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
              Item3
          </li>
          <li>
              Item4
          </li>
        </ul>
      </li>
</ul>