如何识别具有最新日期和最高优先级设置的优先级元素。
_在同样的情况下,我正在构建同位素应用程序 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>
这是我的通知ID
的密钥0 - user messaged
1 - user viewed your profile
2 - user just joined
3 - user come online
答案 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);
作为一个注释,这不会考虑小时,分钟,秒或毫秒来更好地证明它有效。