JQuery Tablesorter - 保持第一行不变
Posted
技术标签:
【中文标题】JQuery Tablesorter - 保持第一行不变【英文标题】:JQuery Tablesorter - leave the first row intact 【发布时间】:2013-10-09 12:37:02 【问题描述】:我正在使用jQuery Tablesorter 2.0 plugin 创建一个可排序的表格......比如说书籍。 表格的第一行将是所有书籍的摘要,我希望它始终位于顶部。
我需要自定义 tablesorter 的行为,但我认为我不能/不应该使用自定义解析器来做到这一点。我认为我需要的是一个自定义比较器函数 - 一个允许我自己比较任意两行的函数,如果我正在寻找的条件没有得到满足,理想情况下也能够调用默认行为。
示例算法是这样的(希望我没有反转我的结果):
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);
现在,我知道一些 JS,但还不足以撬开一个流行的库并重写它的部分内容,特别是在我加载原始库之后作为一个补丁会继续运行。 (那将是理想的)。另外,如果我能以任何其他方式完成这种行为,我会全力以赴。
【问题讨论】:
【参考方案1】:一个更简单的解决方案是尝试我的fork of tablesorter,然后将您不想排序的那一行放入单独的 tbody - 这不适用于原始表格排序器。
<table class="tablesorter">
<thead>
...
</thead>
<tbody class="tablesorter-infoOnly">
... <!-- non-sorting tbody -->
</tbody>
<tbody>
...
</tbody>
</table>
由于只有一行,所以不需要添加“tablesorter-infoOnly”类名;它确实会阻止对其应用列样式。试试this demo,去掉tbody类名看看区别。
仅供参考,您可以在表格中添加任意数量的 tbodies。
【讨论】:
谢谢,看起来很有希望。我正在做一些额外的事情,比如有两行标题,一个用于元目的,具有多列跨度并且不进行排序。一列被隐藏。此外,我添加和删除了相当多的行,原来的 tablesorter 有时会搞砸。希望您不会介意如果我遇到困难与您联系。 页眉中的两行、信息 tbody、页脚等应该不是问题。隐藏列可能不是必需的;但这一切都取决于你想用这些数据做什么。如果您需要任何帮助,请随时寻求帮助:) 好的,这里有个问题。我在 thead 中有两行,我只想在第二个 tr 上排序。所以,我使用这个设置:headers: 0: sorter: "digit" , 1: sorter: "text" , 2: sorter: "text" , ...
。我相信这适用于顶部标题行。就好像我还需要一个headers2
键,或者我应该指定我的标题单元格的二维坐标。希望这个问题是有道理的。我目前可以使用headers
键关闭两个标题中的第一个中的排序,但我不能使用相同的属性来指定标题中第二行的数据类型。 sortList
适用于?
您可以将sorter-false
类名添加到您要忽略的单元格中。标题选项编号(0、1、2、3 等)也适用于标题单元格索引。 SortList
适用于列,而不是标题索引。这是一个例子:jsfiddle.net/abkNM/1395
啊,我不认为每个标题单元格都可以通过单个索引来识别。现在想想,这完全有道理。谢谢你,先生!您的 tablesorter 叉子工作得很好,而且非常易于使用。它应该更受欢迎。以上是关于JQuery Tablesorter - 保持第一行不变的主要内容,如果未能解决你的问题,请参考以下文章
问题:使用 jquery 插件 tablesorter 进行表格排序和分页
jQuery插件 tablesorter 表格排序 使用说明
jQuery插件 tablesorter 表格排序 使用说明