根据jquery和把手中的日期排序列表标签

时间:2014-09-09 10:20:20

标签: javascript jquery html handlebars.js

我想根据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); });

   }  

1 个答案:

答案 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()对象,然后比较这些日期。由于您没有提供字符串表示的示例,因此很难知道需要哪种方法,但这应该给您一些指示。