jQuery Isotope — сортировать по категориям, но указывать, что идет первым

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

Представьте эти элементы категории в сетке изотопов:

  • красный
  • Зеленый
  • Синий
  • красный
  • Зеленый
  • Синий

Если я сортирую по категориям, это происходит в алфавитном порядке, чтобы показать:

  • Синий
  • Синий
  • Зеленый
  • Зеленый
  • красный
  • красный

Я бы хотел, чтобы конкретная категория была впереди, например. "Зеленый", вот так:

  • Зеленый
  • Зеленый
  • красный
  • красный
  • Синий
  • Синий

Это возможно?

Я попытался добавить функцию getSortData для каждой категории следующим образом:

      green : function( $elem ) {
        var $greenItems = $elem.filter('.green');            
        var $otherItems = $elem.filter(':not(.green)');
        return $greenItems.add($otherItems);
      }
      // repeat for blue, red, etc

Но это не сработало.


person thv20    schedule 23.09.2012    source источник


Ответы (1)


Это сработало для меня:

green : function( $elem ) {
    var isGreen = $elem.hasClass('green');
    return (!isGreen?' ':'');
},
// etc

Демонстрация: http://jsfiddle.net/Yvk9q/9/

person thv20    schedule 23.09.2012