1

スクリプトに問題があります。私は自分のファイル構造のリストを持っています(したがって、これは再帰的な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が下にスライドしますが、その後、folder2とfolder1の両方が$('。folder')のコレクションにあるため、folder1が上にスライドします。

解決策は何ですか?

ありがとう。

4

1 に答える 1

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

を使用してみてくださいe.stopPropagation()。PARENTで実行されるアクションを防ぎます。

ワーキングフィドル

于 2013-02-02T14:15:33.540 に答える