List.js - 按日期排序问题

3gw*_*ain 6 javascript sorting listjs

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

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

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

这是我的代码:

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

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

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

小智 10

您也可以使用数据属性:

JS

valueNames: ['date', { name: 'timestamp', attr: 'data-timestamp' }
Run Code Online (Sandbox Code Playgroud)

HTML

<td class="date timestamp" data-timestamp="1427713871">30/03/2015</td>
Run Code Online (Sandbox Code Playgroud)

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


Moh*_*aid 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>
Run Code Online (Sandbox Code Playgroud)

<td class="xlarge-head ">
    <span class="c_start">01/01/2015</span>
    <span class="c_start_ts hide">1420070400</span>
</td>
Run Code Online (Sandbox Code Playgroud)

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

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