Sort a list by id by using javascript
本问题已经有最佳答案,请猛点这里访问。
我正在iOS上制作一个PhoneGap应用程序,需要按时间排序我尝试将时间添加到每个LI项目的ID中,然后根据ID进行排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <ul id="test"> <li id="4112">blub </li> <li id="1422">blaaah </li> <li id="6640">hmmmm </li> <li id="2221">one more </li> </ul> |
这里是javascript:
1 2 3 4 5 6 7 | $(function(){ var elems = $('#test').children('li').remove(); elems.sort(function(a,b){ return (new Date(a.id) > new Date(b.id)); }); $('#test').append(elems); }); |
http://jsfiddle.net/3uyuq/1103/
我试了一下铬,它运行得很好。但是,如果我尝试使用PhoneGap应用程序,列表的排序就不正确。它不服从任何命令。有什么解决办法吗?P/S:有人说在Safari上应该是(新日期(A.ID)-新日期(B.ID)),但似乎它不影响PhoneGap
详细解释我的电话间隙代码。此代码从数据库检索记录,并将其显示为HTML上的项目列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | function getAllDeadlines_success(tx, results){ var len = results.rows.length; //var s =""; $('#allList').empty(); var tmpDueDate = '1900-01-01'; var tmpDueTime = '00:00'; for (var i=0; i<len; i++){ var allDeadline = results.rows.item(i); var deadlineDatePart = allDeadline.duedate.split('-'); var deadlineTimePart = allDeadline.duetime.split(':'); var newDate = new Date(deadlineDatePart[0], deadlineDatePart[1] - 1 , deadlineDatePart[2], deadlineTimePart[0], deadlineTimePart[1], 0, 0); var notiDate = new Date(newDate - 86400*1000); //compare with current time var result = isLate(allDeadline.duedate, allDeadline.duetime).toString(); if ( result =="true"){ $('#allList').append('<li id ="'+allDeadline.duedate+' '+allDeadline.duetime+'">'+ allDeadline.class +''+ allDeadline.duedate+' '+ allDeadline.duetime+''+ allDeadline.description +' </li> '); // window.plugin.notification.local.add({ // id : getRandomInt(0,99999), // message: 'Dont forget to complete: '+allDeadline.description+'', // badge: 0, // date: notiDate // }); } } $(function(){ var elems = $('#allList').children('li').remove(); elems.sort(function(a,b){ return (new Date(a.id) > new Date(b.id)); }); $('#allList').append(elems); }); $("#allList").listview().listview('refresh'); } |
比较函数必须返回一个整数。
1 2 3 | elems.sort(function(a, b) { return a.id - b.id; }); |
或者,在现代ES6风格中:
1 | elems.sort((a, b) => a.id - b.id); |
号