jQuery在数据属性中按日期排序

如果我有这个标记:

item 1

item 1

item 1

我如何使用jQuery按照他们的data-date属性来命令这些P?

谢谢

演示

超级简单的数组排序:

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

反向顺序(如果我误解了你)就像翻转大于符号一样容易

 $("p").sort(function(a,b){ return new Date($(a).attr("data-date")) < new Date($(b).attr("data-date")); }).each(function(){ $("body").prepend(this); }) 
 function sortDates(a, b) { return new Date(b).getTime() - new Date(a).getTime(); } var dates = []; var _old; $('p').each(function(){ _old = $(this).parent(); dates.push($(this).data('date')); }); var sorted = dates.sort(sortDates); var _new = $('
').insertBefore(_old); $.each(sorted,function(i,val){ $('p[data-date="' + val + '"]').appendTo(_new); }); _old.remove();

工作演示: http : //jsfiddle.net/AlienWebguy/JhgSw/

Joseph的答案(当前接受的解决方案)中建议的自定义函数应该返回一个数值,而不是布尔值。 请参阅此问题已提出此问题,表明此function在IE中不起作用。

这里定义的“dates.compare(a,b)”函数看起来更适合在jQuery的sort方法中使用。