【问题标题】:List.js - By date sorting issueList.js - 按日期排序问题
【发布时间】:2013-06-03 23:33:22
【问题描述】:

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

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

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

这是我的代码:

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

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

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

【问题讨论】:

  • 你确定要使用这个库吗?它有 25 个未解决的问题,处于测试阶段,最后一次提交是在 9 个月前(不包括这两个拉取请求)。
  • 刚刚遇到同样的问题。找到任何解决方案了吗?创建此库的人再次处于活动状态。他前几天刚换了网站界面。但不知道如何联系他。

标签: javascript sorting listjs


【解决方案1】:

您也可以使用数据属性:

js

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

html

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

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

【讨论】:

  • 很好的解决方案。我不知道 list.js 可以接受数据属性。
【解决方案2】:

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

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

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


这是我使用的示例:

我的列表是一个表格,这里的&lt;td&gt; 是主容器。 然后,我在&lt;td&gt; 中使用了两个&lt;span&gt;

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

至于排序,使用第二个 Span c_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_ts 传递给list.js 进行排序,表格中的TD 将被排序。

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

【讨论】:

  • 仅供参考,我必须这样做才能使用 div:
    1444262400 2015 年 10 月 8 日
    然后我将 'datevar' 作为 JS 代码中的 valueNames 之一传递。
  • 很高兴我的回答对您有所帮助,在您的方法中,您似乎将显示(格式化)日期和时间戳放在同一父级中的同一级别。
猜你喜欢
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多