jQuery数据属性中的按日期排序
如果我有这个标记:jQuery数据属性中的按日期排序,jquery,Jquery,如果我有这个标记: <p data-date="Fri, 26 Aug 2011 20:58:39 GMT">item 1</p> <p data-date="Fri, 24 Aug 2011 20:58:39 GMT">item 1</p> <p data-date="Fri, 25 Aug 2011 20:58:39 GMT">item 1</p> 第1项 第1项 第1项 如何使用jQuery按数据日期属性对这些p进
<p data-date="Fri, 26 Aug 2011 20:58:39 GMT">item 1</p>
<p data-date="Fri, 24 Aug 2011 20:58:39 GMT">item 1</p>
<p data-date="Fri, 25 Aug 2011 20:58:39 GMT">item 1</p>
第1项
第1项
第1项
如何使用jQuery按数据日期属性对这些p进行排序
谢谢功能分类日期(a、b)
{
返回新日期(b).getTime()-新日期(a).getTime();
}
var日期=[];
var_old;
$('p')。每个(函数(){
_old=$(this.parent();
dates.push($(this.data('date'));
});
var sorted=dates.sort(排序日期);
var_new=$('').insertBefore(_old);
$。每个(已排序,函数(i,val){
$('p[data date=“”+val+“]')。附录(_new);
});
_旧的。删除();
工作演示:
带有数组排序的超级简单:
$("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);
})
$(“p”).sort(函数(a,b){
返回新日期($(a).attr(“数据日期”)<新日期($(b).attr(“数据日期”));
}).each(函数({
$(“正文”)。前置(本);
})
Joseph答案中建议的自定义函数(当前接受的解决方案)应返回数值,而不是布尔值。查看已在何处提出此问题,表明此功能在IE中不起作用
定义的“dates.compare(a,b)”函数看起来更适合在jQuery的排序方法中使用。升序还是降序?哈哈,谢谢,@AlienWebguy:)但不管怎样,只要可行,您的解决方案就会更快:p该方法在IE9中似乎不起作用。不确定它是否为.sort,但列表在IE9中正好相反。@trobbins26我现在没有IE。你能试试这个更新版本吗?
$("p").sort(function(a,b){
return new Date($(a).attr("data-date")) < new Date($(b).attr("data-date"));
}).each(function(){
$("body").prepend(this);
})