2012-01-30 53 views
3

我想按頁面加載時的內容日期排列div的內容日期......我得到的是排序。但是,並非按日期...如何按內容日期對div的排序<span>

HTML

<div id="container"> 

    <div class="element"> 
     <p class="title">TEST 03</p> 
     <span>01/2010</span> 
    </div> 

    <div class="element"> 
     <p class="title">TEST 01</p> 
     <span>01/2012</span> 
    </div> 

    <div class="element"> 
     <p class="title">TEST 04</p> 
     <span>01/2009</span> 
    </div> 

    <div class="element"> 
     <p class="title">TEST 02</p> 
     <span>01/2011</span> 
    </div> 

</div> 

jQuery的

function sortDescending(a, b) { 
    var date1 = $(a).find("span").text(); 
     date1 = date1.split('/'); 
    date1 = new Date(date1[2], date1[1] -1, date1[0]); 
    var date2 = $(b).find("span").text(); 
     date2= date2.split('/'); 
    date2= new Date(date2[2], date2[1] -1, date2[0]); 

    return date1 < date2 ? 1 : -1; 
    }; 
    $(document).ready(function() { 
     $('#container .element').sort(sortDescending).appendTo('#container'); 
    }); 

我知道我需要一個函數來找出內容是一個日期..只要別噸知道如何...

誰能幫我嗎?

謝謝。

回答

1

<span>文本似乎只有mm/yyyy格式,而您的日期構造函數期望在結果數組中有3個元素。

date1 = date1.split('/'); // -> [ "01", "2009" ] 
date1 = new Date( 
    date1[2]  /* undefined */, 
    date1[1] -1 /* year */ , 
    date1[0]  /* month */ 
); 

你需要稍微改變日期的構造函數:

date1 = new Date(date1[1], date1[0] -1, 1); 
+1

感謝安迪,我從源中刪除一天,但不是在JS,...需要睡眠 ... – Tomaw 2012-01-30 15:16:56

0

使用冒泡排序:

$(document).ready(

    function() { 
     var divArray = $("div#container>div.element"); 

     for (j = divArray.length; j > 0; j--) { 
      for (i = 0; i < j - 1; i++) { 
       if ($(divArray[i]).children("span").html() > $(divArray[i + 1]).children("span").html()) { 
        temp = $(divArray[i]).html(); 
        $(divArray[i]).html($(divArray[i + 1]).html()); 
        $(divArray[i + 1]).html(temp); 
       } 
      } 
     } 
    });