JQuery Tablesorter - 保持第一行不变

Ham*_*jan 4 javascript jquery customization tablesorter jquery-plugins

我正在使用jQuery Tablesorter 2.0 插件创建一个可排序的表格......比如说书籍。表格的第一行将是所有书籍的摘要,我希望它始终位于顶部。

我需要自定义表排序器的行为,但我认为我不能/应该使用自定义解析器来做到这一点。我认为我需要的是一个自定义比较器函数 - 该函数允许我自己比较任意两行,理想情况下,如果我正在寻找的条件未得到满足,也能够调用默认行为。

示例算法如下(希望我没有反转我的结果):

function customSort(lhs, rhs, table, column_index) {
    if (lhs === 'magic_str') {
        return -1; // Magic string wins
    }
    if (rhs === 'magic_str') {
        return 1; // Magic string wins
    }
    return defaultSort(lhs, rhs, table, column_index);
}
Run Code Online (Sandbox Code Playgroud)

现在,我了解一些 JS,但还不足以撬开一个流行的库并重写它的部分内容,特别是在我加载原始库后作为一个位于顶部的补丁。(那将是理想的)。另外,如果我能以任何其他方式完成这种行为,我会洗耳恭听。

Mot*_*tie 5

一个更简单的解决方案是尝试我的tablesorter 分支,然后将您不想排序的行放入单独的 tbody 中 - 这不适用于原始的 tablesorter。

<table class="tablesorter">
    <thead>
        ...
    </thead>
    <tbody class="tablesorter-infoOnly">
        ... <!-- non-sorting tbody -->
    </tbody>
    <tbody>
        ...
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

由于它只有一行,因此您实际上不需要添加“tablesorter-infoOnly”类名;它确实阻止了对其应用列样式。尝试这个演示并删除 tbody 类名以查看差异。

仅供参考,您可以向表中添加任意数量的 tbody。