【问题标题】:sort divs based on dates - javascript根据日期对 div 进行排序 - javascript
【发布时间】:2018-03-04 02:24:55
【问题描述】:

我有带有数据属性data-submit-date 的 div,我想根据该属性的值(即日期格式)对它们进行排序。

这是其中一个 div 的代码:

<div class="article" data-submit-date="2017-09-12T05:45:36.951Z">
     <h1>aaaaA</h1>
</div>

我的尝试:

$divss = $(".article");
    var alphaOrderDivs = $divss.sort(function (a, b) {
    return $(a).data("submit-date") > $(b).data("submit-date"); 
});
$(".articles").html(alphaOrderDivs);

我用Date.parse($(a).data("submit-date")) 替换了这行$(a).data("submit-date"),但它失败了。谁能帮帮我?

提前致谢

【问题讨论】:

标签: javascript jquery


【解决方案1】:

试试下面的

var articles = $.makeArray($(".article"));
articles.sort(function(a, b) {
   return new Date($(a).data("submit-date")) < new Date($(b).data("submit-date"));
});

片段

var articles = $.makeArray($(".article"));
    articles.sort(function(a, b) {
       return new Date($(a).data("submit-date")) < new Date($(b).data("submit-date"));
    });
    console.log(articles);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="article" data-submit-date="2017-09-10T05:45:36.951Z">
     <h1>aaaaA</h1>
</div>
<div class="article" data-submit-date="2017-09-12T05:45:36.951Z">
     <h1>aaaaA</h1>
</div>
<div class="article" data-submit-date="2017-09-11T05:45:36.951Z">
     <h1>aaaaA</h1>
</div>

【讨论】:

    【解决方案2】:

    使用getTime()方法如下:

     $divss = $(".article");
     var alphaOrderDivs = $divss.sort(function (a, b) {
       return new Date($(a).data("submit-date")).getTime() > new Date($(b).data("submit-date")).getTime(); 
     });
     $(".articles").html(alphaOrderDivs);
    

    Date 对象的 getTime() 方法会将您的时间解析为毫秒,从而帮助您比较它们。

    【讨论】:

    • 是的,你可以比较 Date 对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多