2012-01-09 41 views
7

Tha thứ cho tôi vì tôi là một người mới làm quen với JS, chỉ biết đủ để thao túng.cách sắp xếp theo ngày (mới) với đồng vị jquery

Đối với những người quen thuộc với đồng vị (http://isotope.metafizzy.co/docs/sorting.html), tôi có một nút ở đầu trang để sắp xếp theo ngày. Đồng vị tìm thấy các yếu tố

<span class="date"> 01/04/2012 </span> 

với điều này:

$container.isotope({ 
    getSortData : { 
     date : function ($elem) { 
     return $elem.find('.date').text(); 
}}); 

nào hoạt động tốt, nhưng tôi cần phải lật (xuống) theo thứ tự ngày

đồng vị có chức năng:

$('#container').isotope({ 
    sortBy : 'date', 
    sortAscending : false 
}); 

Nhưng tôi không thể làm cho nó hoạt động - điều đó chỉ làm cho sắp xếp thiết lập mặc định theo ngày, thay vì sắp xếp khi tôi nhấp. Tôi nghĩ rằng đây chỉ là một câu hỏi về cú pháp ... làm thế nào/nơi tôi có thể đặt sortAscending: false ??

Thanks ...

EDIT Xem một số nguồn tin từ Demo, tôi thấy rằng:

<a href="#sortAscending=false"> 

có thể được thực hiện, nhưng tôi đã sắp xếp bằng cách này:

<a href="#sortBy=date"> 

Tìm thấy khoảng cách từ trước đó với thông tin ngày ...

+0

Không hồi sinh một chuỗi cũ, nhưng bạn đã bao giờ tìm thấy câu trả lời cho câu hỏi này chưa? – ahollenbach

Trả lời

7

Dưới đây là làm thế nào tôi đã làm nó, jsFiddle

$container.isotope({ 
    itemSelector: '.element', 
    getSortData: { 
     date: function ($elem) { 
      return Date.parse($elem.find('.date').text()); 
     } 
    } 
}); 

Nó dường như không có vấn đề gì định dạng ngày tháng theo, và các công trình Tăng dần và giảm dần.

Các parse() phương pháp phân tích một chuỗi ngày tháng và trả về số mili giây giữa chuỗi ngày và nửa đêm của tháng 1, 1970.

Về cơ bản nó quay chuỗi ngày của bạn thành số rắn đẹp mà rất dễ so sánh .

+0

Cảm ơn bạn! jsFiddle có rất nhiều ví dụ phân loại! – Paschalis

+0

Tôi đã chơi với jsFiddle của bạn, và nó dường như không thực sự làm việc. Trước hết, hãy thử tắt kích thước biến để bạn có thể thấy thứ tự sắp xếp tốt hơn. – magi182

+0

@ magi182 bạn đã nhấp vào nút ngày chưa? – apaul

2

Heres những gì tôi đã làm để sắp xếp theo ngày.

Nếu ngày của bạn ở định dạng '01/01/2012 'thì bạn cần chuyển đổi nó thành đối tượng ngày javascript.

getSortData: { 
    date: function ($elem) { 
     var dateStr = $elem.find('.date').text(), 
      dateArray = dateStr.split('/'), 
      year = dateArray[2], 
      month = dateArray[0], 
      day = dateArray[1]; 
     return new Date(year, month, day); 
    } 
} 

sau đó bạn làm bạn bình thường

$('#container').isotope({ sortBy: 'date' }); 
+1

Bạn nên trả lại "return year.toString() + month.toString() + day.toString();" rằng, sự trở lại của bạn sẽ sắp xếp các ngày trong tuần theo thứ tự abc – Blowsie

Các vấn đề liên quan