jQuery: сортировка изотопов по дате

Я сортирую сетку div по дате, но столкнулся с проблемой. Элементы div сортируются по дате, но когда вы вводите еще один месяц, это не учитывается и сортируется только по значению дня.

HTML:

<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 по дате?


person user1374796    schedule 07.03.2013    source источник


Ответы (2)


Вам нужно изменить формат даты. Как сейчас, вы не можете различить дни и месяцы: 2122013 может быть как 2.12.2013, так и 21.2.2013.

Я бы предложил обычный формат Y-M-D (год-месяц-день, например, 2013-03-07).
По умолчанию он сортируется. Больше ничего менять не нужно.

person kapex    schedule 07.03.2013

person    schedule
comment
это не сработало, не сортирует div по дате? - person user1374796; 07.03.2013
comment
Я тоже пробовал отредактированный, казалось, сортировал div в случайном порядке. Я видел, что вы изменили его обратно на тот, что указан выше, я пробовал с ним работать, но все еще не могу заставить его работать? - person user1374796; 08.03.2013
comment
Можете ли вы изменить способ генерации даты, добавив 0 к месяцу? - person TizianoPiccardi; 08.03.2013
comment
Я могу на этой странице, да. Я изменил php, теперь сгенерированные даты имеют начальный ноль, есть ли способ успешно отсортировать по дате? - person user1374796; 08.03.2013
comment
Я отредактировал ответ, чтобы достичь вашей цели. Кстати, если вы можете сгенерировать дату по своему усмотрению, проще вернуть значение в этом формате (ггггммдд) прямо с вашей php-страницы. (вам не нужна эта адаптация javascript) - person TizianoPiccardi; 08.03.2013