【问题标题】:Arrange <p> elements in date order using jQuery使用 jQuery 按日期顺序排列 <p> 元素
【发布时间】:2013-12-10 11:07:01
【问题描述】:

大家好,我有一个数据日期列表,其中包含它需要出现的订单日期。

这是我的代码:

HTML:

<p data-date="Fri, 26 Aug 2011 20:58:39 GMT">item 1</p>
<p data-date="Fri, 24 Aug 2011 20:58:39 GMT">item 2</p>
<p data-date="Fri, 25 Aug 2011 20:58:39 GMT">item 3</p>

jQuery:

$("p").sort(function(a,b){
    return new Date($(a).attr("data-date")) > new Date($(b).attr("data-date"));
}).each(function(){
    $("body").prepend(this);
})

jsFiddle Demo

它似乎工作了 50%

【问题讨论】:

  • 您的演示似乎有效?你能提供什么时候没有的例子吗?
  • 对不起,我只是更新 jsfiddle 这是我的代码 - jsfiddle.net/CQ3gg/302
  • 您仍在对 jQuery 选择器中的 p 元素进行排序...

标签: javascript jquery html datetime


【解决方案1】:

您需要手动解析dd/mm/yyyy 格式的日期。此外,sort 函数希望您返回一个大于小于或等于零的数字;不是truefalse。修改功能:

$("#posts li").sort(function (a, b) {
    var aComp = $(a).attr("data-date").split("/");
    var aDate = new Date(+aComp[2], +aComp[1] - 1, +aComp[0]);
    var bComp = $(b).attr("data-date").split("/");
    var bDate = new Date(+bComp[2], +bComp[1] - 1, +bComp[0]);
    return aDate - bDate;
}).prependTo("#posts");

Demo here

【讨论】:

  • 只有一个问题,如何在升序和降序之间切换
  • 在排序函数中将a - b改为b - a
  • 谢谢!你的答案有点长,但它是我测试过的最完美的一个
猜你喜欢
  • 2023-03-08
  • 2012-12-28
  • 2017-02-18
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
相关资源
最近更新 更多