javascript - jquery 显示隐藏 li 元素的问题

标签 javascript jquery html

我尝试获得类似 Accordion 的功能,我只有 <li>对于类 .level1、.level2、.level3 ..etc,我遇到的问题是,如果我单击 .level2,项目将隐藏到下一个 .level2 元素,而不会出现问题。
但是,如果我单击 .level3 并隐藏 .level4,然后单击 .level2 隐藏 .level3,我可以在 .level2 下看到 .level4 项目。

我不知道如何解决这个问题

请查看演示:

$('.level2').click(function(e) {

  if ($(this).next('li').hasClass('level3')) {
    $(this).nextUntil('.level2').toggle();
    e.preventDefault()
  }
})

$('.level3').click(function(e) {
  if ($(this).next('li').hasClass('level4')) {

    $(this).nextUntil('.level3').toggle();
    e.preventDefault()
  }
})

$('.level4').click(function(e) {
  if ($(this).next('li').hasClass('level5')) {

    $(this).nextUntil('.level4').toggle();
    e.preventDefault()
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="level1"><a href=""><span>Level1</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level3</a></li>
 </ul>
     
    
 

最佳答案

不确定您想要实现什么,看看这个,它可能会给您带来更干净、更高效的想法:

$('li a').click(function (e){
  
    if($(this).parent().find('>ul').length>0){
       $(this).parent().find('>ul').toggle();
}
    e.preventDefault();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
<li><a href=""><span>Level1</a>
    <ul>
       <li><a href=""><span>Level2</a>
            <ul>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
            </ul>
        </li>
        <li><a href=""><span>Level2</a></li>
        <li><a href=""><span>Level2</a></li>
        <li><a href=""><span>Level2</a>
            <ul>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
                <li><a href=""><span>Level3</a></li>
            </ul>
        </li>
    </ul>
</li>

 </ul>
     
    
 

关于javascript - jquery 显示隐藏 li 元素的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32407003/

相关文章:

javascript - HERE 自动完成 API 排除结果类型(街道、房屋编号等)

c# - 将 GET 变量挂接到 onload JavaScript 事件中

javascript - 打开后一秒显示 Angular UI 模态

jquery - CSS3 - 动画背景图像过滤器

jquery - 更改连续动画

javascript - 根据对象的内部数组对对象数组进行排序

javascript - 从 GeoServer 检索图层名称的 AJAX 回调失败并出现断言错误

javascript - 如何更新 Django 表单中的隐藏字段

jquery - 逐行显示验证错误

html - 我使用什么 CSS 代码使我的网站在不同的浏览器中呈现?