我想根据jquery或javascript中的日期对我的列表元素进行排序。我已经在把手中完成了我的代码,我将在下面发布:
<script id="template" type="text/html">
<ul class="checklist" data-role="listview" data-inset="true" data-autodividers="true">
{{#container}}
{{#nid}}<li><a href="checklist-detail.html?nid={{nid}}">{{name}}-{{status}}{{#date}}<br />
<span class="due-date">{{date}}</span>{{/date}}</a></li>{{/nid}}
{{/container}}
</ul>
</script>
任何人都可以帮我根据日期对元素进行排序吗? 我在另一个模板中使用了javascript代码(即下面的代码)按字母顺序排序列表元素,并且工作正常:
function sort()
{
var mylist = $('ul');
var listitems = mylist.children('li').get();
listitems.sort(function(a, b) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });
}
答案 0 :(得分:0)
如果您的日期格式可以按字母顺序排序(例如,ISO 8601将今天呈现为2014-09-09
),那么您只需使用日期的字符串值即可。< / p>
否则,您必须将文本解析为日期并进行比较。 JavaScript为某些日期格式提供了一种简单的方法:Date.parse()
。如果您的日期字符串采用Date.parse()
支持的格式,那么您可以创建一个类似的排序函数:
var sortByDate = function(a, b) {
var compA = Date.parse($(a).text());
var compB = Date.parse($(b).text());
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
};
function sort() {
var mylist = $('ul');
var listitems = mylist.children('li').get();
listitems.sort(sortByDate);
$.each(listitems, function(idx, itm) { mylist.append(itm); });
}
但是,如果它采用不受支持的格式,您必须自己将日期字符串解析为其组成部分,为每个项目创建一个新的Date()对象,然后比较这些日期。由于您没有提供字符串表示的示例,因此很难知道需要哪种方法,但这应该给您一些指示。