jQuery集合问题

时间:2013-02-02 14:11:57

标签: html css collections

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

以下是一些代码:

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();
  });
});

所以,当我点击folder2时,folder2的ul将向下滑动,但在它之后,folder1将向上滑动,因为$('。folder')集合中的folder2和folder1。

解决方案是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

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

尝试使用e.stopPropagation()。它会阻止对PARENT执行操作。

Working Fiddle