首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery滑动切换嵌套列表关闭打开列表不起作用

JQuery滑动切换嵌套列表关闭打开列表不起作用
EN

Stack Overflow用户
提问于 2019-03-03 20:27:18
回答 2查看 204关注 0票数 3

我有一个简单的嵌套列表,如下:

代码语言:javascript
复制
<ul class='main'>
  <li class='mainlink'><a href='#'>Main 1</a>
    <ul class='sub'>
      <li><a href='#'>Sub 1-1</a>
        <li><a href='#'>Sub 1-2</a>
          <li><a href='#'>Sub 1-3</a>
    </ul>
    </li>
    <li class='mainlink'><a href='#'>Main 2</a>
      <ul class='sub'>
        <li><a href='#'>Sub 2-1</a>
          <li><a href='#'>Sub 2-2</a>
            <li><a href='#'>Sub 3-3</a>
      </ul>
      </li>
      <li class='mainlink'><a href='#'>Main 3</a>
        <ul class='sub'>
          <li><a href='#'>Sub 3-1</a>
            <li><a href='#'>Sub 3-2</a>
              <li><a href='#'>Sub 3-2</a>
        </ul>
        </li>
</ul>

这是我的jQuery:

代码语言:javascript
复制
$( ".mainlink" ).click(function() { 
    var child = $(this).children('.sub');
    var rest = $('.sub:visible').not(child);     
    child.slideToggle();
    rest.slideUp();    
});

单击.mainlink应该会打开它的子列表.sub,并关闭所有其他打开的子列表。此部分的功能与预期一致,但在打开.sub的情况下单击.mainlink会关闭.sub并立即打开它,而不是保持关闭状态直到下一次单击发生。

这个问题可能很容易解决,但我显然找不到正确的方法。谢谢你的帮助。

拉尔夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-03 20:35:22

试试这个:

代码语言:javascript
复制
$(document).ready(function(){
   $( ".mainlink > a" ).click(function() { 
        $('.main .sub').not($(this)).slideUp();
        var child = $(this).parent().children('.sub');
        if(!child.is(":visible")){
            child.slideDown();      
        }    
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class='main'>
<li class='mainlink'><a href='#'>Main 1</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 1-1</a>
<li><a href='#'>Sub 1-2</a>
<li><a href='#'>Sub 1-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 2</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 2-1</a>
<li><a href='#'>Sub 2-2</a>
<li><a href='#'>Sub 3-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 3</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 3-1</a>
<li><a href='#'>Sub 3-2</a>
<li><a href='#'>Sub 3-2</a>
</ul>
</li>
</ul>

票数 1
EN

Stack Overflow用户

发布于 2019-03-03 20:40:21

关闭所有.sub,然后打开用户选择的.sub

演示

代码语言:javascript
复制
$(".mainlink a").on('click', function() {
  var subMenu = $(this).next('.sub');
  $('.sub').slideUp();
  if (subMenu.is(':visible')) {
    subMenu.slideUp();
  } else {
    subMenu.slideDown();
  }
});
代码语言:javascript
复制
<ul class='main'>
  <li class='mainlink'>
    <a href='#'>Main 1</a>
    <ul class='sub' style='display:none'>
      <li><a href='#'>Sub 1-1</a></li>
      <li><a href='#'>Sub 1-2</a></li>
      <li><a href='#'>Sub 1-3</a></li>
    </ul>
  </li>
  <li class='mainlink'>
    <a href='#'>Main 2</a>
    <ul class='sub' style='display:none'>
      <li><a href='#'>Sub 2-1</a></li>
      <li><a href='#'>Sub 2-2</a></li>
      <li><a href='#'>Sub 3-3</a></li>
    </ul>
  </li>
  <li class='mainlink'>
    <a href='#'>Main 3</a>
    <ul class='sub' style='display:none'>
      <li><a href='#'>Sub 3-1</a></li>
      <li><a href='#'>Sub 3-2</a></li>
      <li><a href='#'>Sub 3-2</a></li>
    </ul>
  </li>
</ul>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54968791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档