2013-03-07 104 views
0

我按日期排序div的网格,但我遇到了一个问题。 divs按日期排序,但是当你引入另一个月时,它不会考虑这个因素,只按日期值排序。

HTML:jQuery:按日期排序同位素

<div class="grid-filter"> 
    <a href="#"> 
    <div class="grid-block" style="background-color: #46747c" data-category="1952013"> 
     <div class="block-text date-title">19/05</div> 
    </div> 
    </a> 
</div> 
<div class="grid-filter"> 
    <a href="#"> 
    <div class="grid-block" style="background-color: #ebd133" data-category="2552013"> 
     <div class="block-text date-title">25/05</div> 
    </div> 
    </a> 
</div> 
<div class="grid-filter"> 
    <a href="#"> 
    <div class="grid-block" style="background-color: #cc7788" data-category="3052013"> 
     <div class="block-text date-title">30/05</div> 
    </div> 
    </a> 
</div> 
<div class="grid-filter"> 
    <a href="#"> 
    <div class="grid-block" style="background-color: #46747c" data-category="0562013"> 
     <div class="block-text date-title">05/06</div> 
    </div> 
    </a> 
</div> 


jQuery的

jQuery(document).ready(function(){ 

var jQuerycontainer = jQuery('#main-grid'); 

if(location.hash!=""){ 
    var hashfilter = "." + location.hash.substr(1); 
    } 
    else{ 
    var hashfilter = "*"; 
    } 

jQuerycontainer.imagesLoaded(function(){ 
jQuerycontainer.isotope({ 
    filter: hashfilter, 
    itemSelector: '.grid-block', 
    getSortData : { 
    date : function(jQueryelem) { 
    return jQueryelem.attr('data-category'); 
    } 
    }, 
    sortBy : 'date', 
    animationEngine: 'css', 
    masonry: { 
    columnWidth: 4 
    } 

}); 
}); 

jQuery('.filter-menu a').click(function(){ 
    var selector = jQuery(this).attr('data-filter'); 
    var prettyselector = selector.substr(1); 
    location.hash = prettyselector; 
    jQuery('html, body').animate({scrollTop:0}, 'slow'); 
    return false; 
    }); 

jQuery('.grid-filter a').click(function(){ 
    var selector = jQuery(this).attr('data-filter'); 
    var prettyselector = selector.substr(1); 
    location.hash = prettyselector; 
    jQuery('html, body').animate({scrollTop:0}, 'slow'); 
    return false; 
    }); 

jQuery(window).hashchange(function(){ 

       if(location.hash!=""){ 
        var hashfilter = "." + location.hash.substr(1); 
       } 
       else{ 
        var hashfilter = "*"; 
       } 


jQuerycontainer.imagesLoaded(function(){ 
jQuerycontainer.isotope({ 
    filter: hashfilter, 
    itemSelector: '.grid-block', 
    getSortData : { 
    date : function(jQueryelem) { 
    return jQueryelem.attr('data-category'); 
    } 
    }, 
    sortBy : 'date', 
    animationEngine: 'css', 
    masonry: { 
    columnWidth: 4 
    } 
}); 
}); 
}); 
}); 

所以块被排序,但最后一节的日期0562013首先表现为05是我承担最小的数字,是无论如何也考虑到这个月,所以它会按日期成功地对div进行排序?

回答

0
jQuerycontainer.imagesLoaded(function(){ 
jQuerycontainer.isotope({ 
    filter: hashfilter, 
    itemSelector: '.grid-block', 
    getSortData : { 
    date : function(jQueryelem) { 
    return date.substring(4,8)+date.substring(2,4)+date.substring(0,2); 
    } 
    }, 
    sortBy : 'date', 
    animationEngine: 'css', 
    masonry: { 
    columnWidth: 4 
    } 

}); 
}); 
+0

这似乎并没有工作,似乎没有按日期排序divs? – user1374796 2013-03-07 18:01:06

+0

我也尝试过编辑过的,似乎以随机顺序对div进行排序。我已经看到你已经将它改回到上面的那个,我已经尝试过使用它,但我仍然无法使它工作? – user1374796 2013-03-07 20:15:53

+0

您是否可以通过在月份中添加0来更改生成日期的方式? – TizianoPiccardi 2013-03-07 20:19:51

0

您需要更改日期格式。现在的方式,你不能区分日期和月份:2122013可能是2.12.2013以及21.2.2013

我会建议共同的Y-M-D(年,月,如2013-03-07)格式。
默认情况下它是可排序的。你不需要改变任何东西。