List.js - 按日期排序问题

时间:2013-06-07 15:34:04

标签: javascript sorting listjs

在我的应用程序中,我使用List.js进行排序。所有“字符串”值都正常工作。但我确实在专栏中有“修改日期”。

当我点击“按日期修改” - 进行排序时,这只是考虑日期值是什么文本,例如:1/4/11 ..并相应地排序。因为这种方法,我得到错误的排序顺序。

我该如何制作呢?应该根据数字的实际值排序日期是什么?

这是我的代码:

new List('mfi-col2', {
       valueNames: ['companyLegalName', 'phazeName', 'contactName', 'number', 'enrollId', 'accountType']
                        });

而不是"number"是否可以发送$(".number").data-number?那么让它使用我从服务器获取的时间戳吗?

或者有人可以为这个插件提出替代方案吗?

2 个答案:

答案 0 :(得分:10)

您也可以使用数据属性:

<强> JS

valueNames: ['date', { name: 'timestamp', attr: 'data-timestamp' }

<强> HTML

<td class="date timestamp" data-timestamp="1427713871">30/03/2015</td>

现在,您可以通过时间戳排序,而无需第二个或隐藏字段。

答案 1 :(得分:6)

我知道这是一个老问题,但这个答案可能对新来者有所帮助。

将您的日期字段与时间戳相关联,然后比较/排序时间戳。 这取决于你,但有一个建议是将它作为第二个隐藏字段添加到同一级别,你显示每个日期,然后当你排序时,整个div / tr将受影响。

以下是我使用的示例:

我的列表以表格形式显示,此处<td>是容器, c_start是显示的实际日期,我显示为我想要(dd / mm / yyyy,dd-mm-yy)因为它只是一个显示器。至于排序,我使用c_start_ts并隐藏它。在 c_start_ts中我设置了时间戳值,这是一个完美的排序。即使您以后想要应用过滤,也可以更容易地处理时间戳,因为它可以转换为真正的int。

<td class="xlarge-head ">
    <span class="c_start">PUT FORMATTED DATE HERE</span>
    <span class="c_start_ts hide">PUT TIME STAMP HERE</span>
</td>

实施例

<td class="xlarge-head ">
    <span class="c_start">01/01/2015</span>
    <span class="c_start_ts hide">1420070400</span>
</td>

然后我将c_start_ts传递给list.js进行排序,表格中的td将被排序。

最近才开始习惯list.js,它有潜力,但后来猜测会转移到另一个lib。希望我帮忙:)