Организация многомерного списка заказов

0

У меня есть ul → ul... list и вы хотите его организовать. Это немного странный дизайн, но тот, который подходит:

<ul id="files">
    <li class="folder">
        <span>folder 5</span>
        <ul>
            <li class="folder">
                <span>folder</span>
                <ul>
                    <li class="folder">
                        <span>folder</span>
                        <ul>
                            <li class="file">file1.js</li>
                            <li class="file">file2.js</li>
                        </ul>
                    </li>
                </ul>
                <li class="file">file.js</li>
            </li>
            <li class="folder">
                <span>folde1r</span>
                <ul>
                    <li class="file">file3.js</li>
                    <li class="file">file4.js</li>
                </ul>
            </li>
            <li class="folder">
                <span>folde2</span>
                <ul>
                    <li class="file">file3.js</li>
                    <li class="file">file4.js</li>
                </ul>
            </li>
        </ul>
    </li>
    <li class="///file file.js">file5.js</li>
    <li class="///file file.js">file2.js</li>
    <li class="///file file.js">file1.js</li>
</ul>

Поэтому сначала были организованы папки, а затем файлы с папками, обычный список файлов (az). Я смотрел на крошечный вид http://tinysort.sjeiti.com/ - но это только полезно для одного ul>li list.

$('#files li span').tsort();

jsFiddle: http://jsfiddle.net/CezarisLT/8bK3f/

Может ли кто-нибудь помочь?

  • 0
    Не является ли $('li').tsort(); дает вам правильные результаты? jsfiddle.net/wMBkL
  • 0
    @sroes Sroes Я понятия не имею, как это работает, но это работает, спасибо. Опубликуйте это как ответ и объясните, как и плохо я даю вам +50. Например, как узнать, как переместить папки вверх?
Показать ещё 2 комментария
Теги:
organization

1 ответ

1
Лучший ответ

$('#files li span') не соответствует всем элементам в списке. Вместо этого попробуйте следующее:

$('#files li').tsort();

http://jsfiddle.net/WRqaE/

Если вам также необходимо отсортировать папки, вы можете предоставить настраиваемую функцию сортировки, чтобы всегда класть папки над файлами:

$('#files li').tsort('', {
    sortFunction: function(a, b) {
        if (a.e.hasClass('folder') && !b.e.hasClass('folder')) {
            return -1;
        } else if (!a.e.hasClass('folder') && b.e.hasClass('folder')) {
            return 1;
        }
        return a.s === b.s ? 0 : (a.s > b.s ? 1 : -1);
    }
});

http://jsfiddle.net/pC24j/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню