Javascript - 最新日期和最高优先级

时间:2014-03-25 15:52:19

标签: javascript jquery

如何识别具有最新日期和最高优先级设置的优先级元素。

_在同样的情况下,我正在构建同位素应用程序 http://jsfiddle.net/CXqM2/178/

这里的关键 - 是在更新数据之后。我想识别/选择a)最新日期通知的元素 - 所以最近的 - AND - 具有与之关联的最低通知ID。

我有li元素的数据属性 - 如下所示

<li class="isotope-item" data-user-notification-id="3" data-user-notification-date="24/03/2014 12:00:10">
test
</li>
  • 存储dom中的日期和通知ID
  • 按最新日期排序
  • 然后循环通过这个直到我找到最低的数字?

这是我的通知ID

的密钥
0 - user messaged
1 - user viewed your profile
2 - user just joined
3 - user come online

1 个答案:

答案 0 :(得分:1)

我同意Pio的评论,如果你可以在数据库中对此进行排序,那么这样做。但是如果你真的需要在javascript中排序。使用排序方法。

的jsfiddle: http://jsfiddle.net/9GUQ3/3/

var stuff = $('ul li').sort(function (a, b)
     {
         var dateA = $(a).attr('data-user-notification-date').split(' ')[0];
         var dateB = $(b).attr('data-user-notification-date').split(' ')[0];
         var priA = $(a).attr('data-user-notification-id');
         var priB = $(b).attr('data-user-notification-id');
         var dString = dateA.split(' ')[0];
         var dA = new Date();

         dA.setYear(dString.split('/')[2]);
         dA.setMonth(parseInt(dString.split('/')[1])-1);
         dA.setDate(dString.split('/')[0]);
         dA.setHours(0);
         dA.setMinutes(0);
         dA.setMilliseconds(0);
         dA.setSeconds(0);

         var dString = dateB.split(' ')[0];
         var dB = new Date();

         dB.setYear(dString.split('/')[2]);
         dB.setMonth(parseInt(dString.split('/')[1])-1);
         dB.setDate(dString.split('/')[0]);
         dB.setHours(0);
         dB.setMinutes(0);
         dB.setMilliseconds(0);
         dB.setSeconds(0);

         if(dA.toUTCString() == dB.toUTCString())
         {
             return parseInt(priA) > parseInt(priB) ? 1 : -1;
         } else {
             return dA <= dB ? 1 : -1;
         }
     });
    $('ul').html(stuff);

作为一个注释,这不会考虑小时,分钟,秒或毫秒来更好地证明它有效。