javascript - 对嵌套列表进行排序

标签 javascript jquery sorting

Given 是一个嵌套列表,具有以下标记(遗憾的是目前无法更改)。 我想对此列表进行排序(以及按“a”标签标题排序的所有嵌套列表。) 第一个 div(未嵌套在“li”中)应该用于对“ul”同级进行排序。

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

<ul>
    <div class="bioResult"><a href="">Test</a></div>
</ul>
<ul>
    <li>
        <ul>
            <div class="bioResult"><a href="">C Departmnet</a></div>
            <li>
                <div class="bioResult"><a href="">C</a></div>
            </li>
        </ul>
    </li>
</ul>

我已经努力完成了嵌套列表排序,但我无法理解“ul”兄弟排序,因为它不起作用,因为我认为它可以起作用。 :)

查看我的fiddle .

目前无法选择插件。

最佳答案

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

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);
    });
});

关于javascript - 对嵌套列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417756/

相关文章:

javascript - 使用 DOM 注入(inject)动态预取资源是否有效或有意义?

javascript - 有没有办法在没有安装的情况下在 Google Chrome "environment"中运行 HTML 文件?

jquery - 通过 Ajax 而不是表单提交从类型 "image"的输入提交数据

javascript - 使用 JQuery 确定元素集合是否可见,例如 $ (".someClass")

c++ - 如何对多映射中的键和值进行排序?

javascript - 无容器控制流语法的 knockout 错误

javascript - 将具有固定宽度和高度的 Chart.js donut 保持在容器中心

java - 为什么 PriorityQueue.toString 返回错误的元素顺序?

jquery - jquery中的下拉列表

performance - 当我选择中位数或模式等枢轴时,快速排序的速度并不快