2013-02-02 56 views
1

我的脚本存在问题。我有我的文件结构列表(所以这是由递归php函数构建的,我不知道我有多少个子文件或子目录)。默认情况下,这些文件夹是隐藏的,当用户单击该文件夹时,第一个包含ul的文件会滑落。 问题是$('。folder')选择器选择子文件夹,然后选择父文件夹等,因为每个文件夹都有相同的文件夹类。所以当我点击打开的文件夹的文件夹时,点击的文件夹将打开,但父文件夹将关闭。我希望描述足够清楚。jQuery收集问题

下面是一些代码:

HTML:

<ul> 
<li class="file">file1.txt</li> 
<li class="folder"> 
    folder1 
    <ul> 
     <li class="folder"> 
     folder2 
      <ul> 
      <li class="file">fileA.txt</li> 
      <li class="file">fileB.txt</li> 
      </ul> 
     </li> 
     <li class="file">file1A.txt</li> 
    </ul> 
    </li> 
    <li class="file">file2.txt</file> 
</ul> 

JS:

$(document).ready(function() { 
    $('.folder').click(function() { 
    $(this).children('ul:first').slideToggle(); 
    }); 
}); 

所以,当我点击文件夹2的文件夹2的UL将下滑,但之后它的文件夹1将向上滑动,因为$('。folder')集合中的folder2和folder1都是。

解决方案是什么?

谢谢。

回答

2
$('.folder').click(function(e) { 
    $(this).children('ul:first').slideToggle(); 
    e.stopPropagation(); 
    return false; 
}); 

尝试使用e.stopPropagation()。它可以防止在父母身上执行操作。

Working Fiddle

+0

你是我的英雄。谢谢,它工作正常。我刚刚第一次听到这个stopPropagation(),但我会记得这么久:)。 –

+0

@VargaTamas,不要忘记标记有抱负的Aqib的答案是否正确,如果这是最好的解决方案(它似乎是)。 – Marc

+0

@Marc;)哇:D –