8

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

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

我怎样才能使它应该按数字的实际值排序?日期是什么?

这是我的代码:

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

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

或者任何人都可以建议这个插件的替代品吗?

4

2 回答 2

12

您也可以使用数据属性:

js

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

html

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

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

于 2016-09-08T07:57:57.540 回答
8

我知道这是一个老问题,但这个答案可能会帮助新人。

对于显示的每个日期,在 HTML 中添加时间戳值,然后比较/排序时间戳值。

一个建议是将时间戳值作为第二个隐藏的 HTML 添加到span显示日期的同一级别。时间戳将用于排序。


这是我使用的示例:

我的列表用作表格,这里<td>是主容器。然后,我<span>在一个<td>.

第一个<span>调用c_start是显示的实际日期,我能够以任何所需的格式(dd/mm/yyyy 或 dd-mm-yy)显示它,因为它只是一个显示。

至于排序,使用第二个 Spanc_start_ts并将其隐藏。c_start_ts我把时间戳值作为一个整数,这是一个完美的排序。即使您稍后想要应用过滤,处理时间戳值也会更容易,因为它可以转换为数字然后进行比较。

<td class="xlarge-head ">
    <span class="c_start">[[FORMATTED-DATE-HERE]]</span>
    <span class="c_start_ts hide">[[PUT-TIMESTAMP-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_tslist.js排序,TD表中的将被排序。

直到最近才开始习惯 list.js,我看到它有潜力,但没有太多的文档或支持。希望我有所帮助:)

于 2013-12-05T09:52:26.057 回答