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方法中使用。