2

編集: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>​

私は何度も試してみましたが、Firefox ブラウザ、IE、またはサファリで問題が発生しました。これは Opera と Chrome でしか機能しません。

4

2 に答える 2

3

並べ替えは正しく機能します。次のように変更"#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);​
于 2012-05-19T20:45:03.377 に答える
2

編集: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);
于 2012-05-19T20:40:17.797 に答える