2016-12-15 52 views
1

我有问题,使用jQuery崩溃名单: -jQuery的嵌套列表倒塌

HTML文件

<ul> 
    <li class="dir">subject1 
     <ul> 
      <li class="dir">lab1 
       <ul> 
        <li>lab1.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab2 
       <ul> 
        <li>lab2.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab3 
       <ul> 
        <li>lab3.pdf</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li class="dir">subject2 
     <ul> 
      <li class="dir">lab1 
       <ul> 
        <li>lab1.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab2 
       <ul> 
        <li>lab2.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab3 
       <ul> 
        <li>lab3.pdf</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li class="dir">subject3 
     <ul> 
      <li class="dir">lab1 
       <ul> 
        <li>lab1.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab2 
       <ul> 
        <li>lab2.pdf</li> 
       </ul> 
      </li> 
      <li class="dir">lab3 
       <ul> 
        <li>lab3.pdf</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

脚本

$('.dir').click(function() { 
    $(this).children().slideToggle(); 
}); 

li标签与dir类是文件夹和我只希望他们在点击时崩溃。
现在我知道,即使我使用$this,每个目录都会崩溃。我究竟做错了什么?

回答

1

您需要使用stopPropagation财产。

$('.dir').click(function(e) { 
    e.stopPropagation(); 
    $(this).children().slideToggle(); 
}); 

$('.dir').click(function(e) { 
 
    e.stopPropagation(); 
 
    $(this).children().slideToggle(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li class="dir">subject1 
 
     <ul> 
 
      <li class="dir">lab1 
 
       <ul> 
 
        <li>lab1.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab2 
 
       <ul> 
 
        <li>lab2.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab3 
 
       <ul> 
 
        <li>lab3.pdf</li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li class="dir">subject2 
 
     <ul> 
 
      <li class="dir">lab1 
 
       <ul> 
 
        <li>lab1.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab2 
 
       <ul> 
 
        <li>lab2.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab3 
 
       <ul> 
 
        <li>lab3.pdf</li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li class="dir">subject3 
 
     <ul> 
 
      <li class="dir">lab1 
 
       <ul> 
 
        <li>lab1.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab2 
 
       <ul> 
 
        <li>lab2.pdf</li> 
 
       </ul> 
 
      </li> 
 
      <li class="dir">lab3 
 
       <ul> 
 
        <li>lab3.pdf</li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
</ul>

+0

完美的作品,不知道这可以做到这一点无情地,你救了我的一天! – dmnmlk

+0

@dmnmlk,不要忘记接受并投票给我的答案,以帮助其他人。 –

+0

完成:)再次感谢 – dmnmlk

0

如果用div包装你outest ul你可以做

$('div>ul>li .dir').click(function() { 
    $(this).slideToggle(); 
}); 
+0

对不起,我编辑你的答案,而不是我的答案。你能否拒绝? –

+0

好吧,但我希望每一个'锂'类'迪尔'折叠在列表上的不同级别 – dmnmlk

+0

@ Alexandru-IonutMihai做:) –