对嵌套列表进行排序

给定是一个嵌套列表,带有以下标记(此时遗憾地无法更改)。 我想对这个列表进行排序(以及所有嵌套列表的’a’-tag标题。)第一个div(不是嵌套在’li’中)应该用于对’ul’兄弟进行排序。

性能也很重要,因为这个列表可以很容易地包含100多个项目,但是比我猜的少1000个。(我不确定这是否会成为性能问题)

  

我已经挣扎着并完成了嵌套列表排序,但是我无法理解’ul’兄弟姐妹的排序,因为它不起作用,因为我认为它可以工作。 🙂

看我的小提琴 。

目前,插件不是一种选择。

对所有内容进行排序是按字母顺序将所有节点附加到其各自父节点的问题。

 function uCase(elem) { return $.trim( $(elem).text().toUpperCase() ) } function compareFirstLink(a, b) { var A = uCase( $(a).first('a') ), B = uCase( $(b).first('a') ); return (A > B) ? 1 : -1; } $(function () { var $sortables = $("ul:has(div:first-child), li:not(.fixedOrder)"); $sortables.sort(compareFirstLink).each(function () { this.parentNode.appendChild(this); }); });