Многомерный список и с функцией переключения для выбора конкретного изображения

#jquery

#jquery

Вопрос:

Я разрабатываю серверную часть веб-сайта, где пользователь может выбрать изображение, загруженное через FTP. Они могут создавать каталоги, которые они хотят, поэтому у меня есть рекурсивная функция PHP, которая получает мне всю информацию и создает список <ul /> и <li /> … но каталог на самом деле состоит из 2 ГБ изображений, так что, представьте, я не могу отобразить все это вместе. Мне нужно переключать / отключать <ul /> отображение каталогов.

Давайте рассмотрим пример структуры. Если у нас есть это:

 <ul>
    <li><a href="/file14">file14</a></li>
    <li><a href="/file15">file15</a></li>
    <li><a href="/file16">file16</a></li>
    <li class="dirname">
        <a href="/dirname1">dirname1/</a>

        <ul>
            <li class="dirname">
                <a href="/dirname1/Dirname2">Dirname2/</a>

                <ul>
                    <li class="dirname">
                        <a href="/dirname1/Dirname2/Dirname3">Dirname3/</a>

                        <ul>
                            <li><a href="/dirname1/Dirname2/Dirname3/file1">file1</a></li>
                            <li><a href="/dirname1/Dirname2/Dirname3/file2">file2</a></li>
                            <li><a href="/dirname1/Dirname2/Dirname3/file3">file3</a></li>
                        </ul>
                    </li>
                    <li><a href="/dirname1/Dirname2/file4">file4</a></li>
                    <li><a href="/dirname1/Dirname2/file5">file5</a></li>
                    <li><a href="/dirname1/Dirname2/file6">file6</a></li>
                    <li class="dirname">
                        <a href="/dirname1/Dirname2/dirname4">dirname4/</a>

                        <ul>
                            <li><a href="/dirname1/Dirname2/dirname4/file7">file7</a></li>
                            <li><a href="/dirname1/Dirname2/dirname4/file8">file8</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li><a href="/dirname1/file9">file9</a></li>
            <li><a href="/dirname1/file10">file10</a></li>
        </ul>
    </li>
    <li><a href="/file11">file11</a></li>
    <li><a href="/file12">file12</a></li>
    <li><a href="/file13">file13</a></li>
</ul>
  

Пользователь должен видеть, что:

 * file14
* file15
* file16
* dirname1/
* file11
* file12
* file13
  

Если они нажмут на dirname1 /, они увидят это:

 * file14
* file15
* file16
* dirname1/
    * Dirname2/
    * file9
    * file10
* file11
* file12
* file13
  

И если они нажмут на Dirname2 /, они увидят это:

 * file14
* file15
* file16
* dirname1/
    * Dirname2/
        * Dirname3/
        * file4
        * file5
        * file6
        * dirname/
    * file9
    * file10
* file11
* file12
* file13
  

Вы поняли идею, нет? Я привел различные примеры, потому что мой английский не в порядке, чтобы вы могли понять мою идею. В основном <li class="dirname"> будет «триггер», но я не могу не отображать все, только когда я нажимаю. Если мы нажимаем, когда отображается содержимое, то должно «отменить показ».

Другая вещь, которую я хочу сделать, это то, что <li /> который не имеет class="dirname" , получает свойство HREF <a /> , которое я сохраню на входе, чтобы обработать его при сохранении.

Хотелось бы, чтобы информации было достаточно, и заранее благодарю вас!

Ответ №1:

Я думаю, это то, что вам нужно? В принципе, он покажет любое, ul которое является дочерним под li.dirname после li.dirname нажатия. При повторном нажатии на него они будут скрыты.

 $(".dirname").click(
    function( e )
    {
        $("> ul", this).toggle();
        e.stopPropagation();
    }
);
  

Комментарии:

1. кажется, мы идем правильным путем, но попробуйте этот пример: jsfiddle.net/XwHth/3 . I закрывает все .dirname (сначала нажмите на dirname1, а затем на dirname2). Заранее благодарю вас!

2. @udexter: Я забыл предотвратить всплывающее событие. Я обновил свой ответ и ваш jsfiddle