编辑:2
var elems = $("#D li").toArray();
elems.sort(function(a, b) {
var adate = new Date($(a).find('div.dateDiv').text());
var bdate = new Date($(b).find('div.dateDiv').text());
return adate > bdate ? -1 : 1;
});
$("#D").html(elems);
<div id="D">
<li>1<div class="dateDiv">2012-04-15 10:25:45</div><div>df</div></li>
<li>2 <div class="dateDiv">2012-04-10 19:41:08</div><div>df</div></li>
<li> 3 <div class="dateDiv">2012-04-20 07:00:10</div><div>ab</div></li>
<li>4 <div class="dateDiv">2012-04-12 16:45:50</div><div>a</div></li>
<li>1<div class="dateDiv">2012-04-15 10:25:45</div></li>
<li>2 <div class="dateDiv">2012-04-10 19:41:08</div></li>
<li> 3 <div class="dateDiv">2012-04-20 07:00:10</div></li>
<li>4 <div class="dateDiv">2012-04-12 16:45:50</div></li>
<li>1<div class="dateDiv">2012-04-15 10:25:45</div></li>
<li>2 <div class="dateDiv">2012-04-10 19:41:08</div></li>
<li> 3 <div class="dateDiv">2012-04-20 07:00:10</div></li>
<li>4 <div class="dateDiv">2012-04-12 16:45:50</div></li>
<li>1<div class="dateDiv">2012-04-15 10:25:45</div></li>
<li>2 <div class="dateDiv">2012-04-10 19:41:08</div></li>
<li> 3 <div class="dateDiv">2012-04-20 07:00:10</div></li>
<li>4 <div class="dateDiv">2012-04-12 16:45:50</div></li>
</div>
我尝试了很多次火狐浏览器或IE或Safari的一些问题,它仅适用于Opera和Chrome ,有人帮忙吗?
排序工作正常,只需将"#d"
更改为"#D"
:
$("#D").html(elems);
或者将标记中的id="D"
更改为id="d"
。
<div id="d">
更新:使用li
元素排序:
var elems = $.makeArray($("#D > li"));
elems.sort(function(a, b) {
return new Date($('.dateDiv',a).text()) < new Date($('.dateDiv',b).text());
});
$("#D").html(elems);
编辑:对 li 进行排序:http://jsfiddle.net/katylava/dsNCX/13/
var elems = $("#D li").toArray();
elems.sort(function(a, b) {
var adate = new Date($(a).find('div.dateDiv').text());
var bdate = new Date($(b).find('div.dateDiv').text());
return adate > bdate ? -1 : 1;
});
$("#D").html(elems);
^^^最终解决方案来自@MerlynMorgan-格雷厄姆删除的答案,而不是我
编辑:以前的解决方案在FF中不起作用,因为它不喜欢日期格式。因此,将空格替换为"T"。但是,这在 Safari 中仍然不起作用。http://jsfiddle.net/dsNCX/17/
var elems = $("#D li").toArray();
elems.sort(function(a, b) {
var adate = new Date($(a).find('div.dateDiv').text().replace(' ', 'T'));
var bdate = new Date($(b).find('div.dateDiv').text().replace(' ', 'T'));
return adate > bdate ? -1 : 1;
});
$("#D").html(elems);