У меня есть 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/
Может ли кто-нибудь помочь?
$('#files li span')
не соответствует всем элементам в списке. Вместо этого попробуйте следующее:
$('#files li').tsort();
Если вам также необходимо отсортировать папки, вы можете предоставить настраиваемую функцию сортировки, чтобы всегда класть папки над файлами:
$('#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);
}
});
$('li').tsort();
дает вам правильные результаты? jsfiddle.net/wMBkL