Я пытаюсь использовать Isotope.js для сортировки данных по типу. Кажется, есть несколько способов сделать это, однако все они требуют, чтобы вы заранее знали переменные сортировки.
Один из лучших примеров того, о чем я говорю, можно найти в этот вопрос.
В примере они пытаются отсортировать по классу, например, сгруппировать все элементы с классом .milk
следующим образом:
milk: function( $elem ) {
var isMilk = $elem.hasClass('milk');
return (!isMilk?' ':'');
},
jsfiddle предоставляется здесь: http://jsfiddle.net/Yvk9q/9/
Моя проблема:
Я извлекаю категории (классы или тип данных) из созданной пользователем базы данных. По этой причине я не могу просто заранее добавить все переменные сортировки в код.
Я играл со скрипкой и получил здесь полурабочий вид: http://jsfiddle.net/BandonRandon/erfXH/1/, используя data-category
вместо класса. Однако это просто сортирует все данные в алфавитном порядке, а не по фактической категории.
Некоторые возможные решения:
- Используйте JSON, чтобы вернуть массив всех категорий, а затем используйте его для перебора классов.
- Используйте встроенный javascript и запустите цикл PHP внутри тега
<script>
- Напишите внешний файл PHP с заголовком javascript
Что я ищу
Самый простой лучший подход здесь, если это одно из решений выше или что-то другое. Это не похоже на то, что это должно быть так сложно. Так что, возможно, я слишком усложняю.
ИЗМЕНИТЬ:
Теперь у меня есть массив json моих данных, но я не могу понять, как передать данные в настройки изотопов, когда я пытаюсь что-то вроде этого
var $container = $('.sort-container');
var opts = {
itemSelector: '.member-item',
layoutMode: 'straightDown',
getSortData : {
$.getJSON( 'member-cat-json.php', function(data) {
$.each(data, function(i, item) {
var slug = data[i].slug;
slug : function( $elem ) {
var is+slug = $elem.hasClass(slug);
return (!is+slug?' ':'');
}
}
});
});
}
}
var $container = $('.sort-container');
$container.isotope(opts);
Это не удается, потому что я не могу использовать цикл внутри настроек плагина. Хотя не уверен, что с этим можно сделать.
РЕДАКТИРОВАТЬ 2:
Я нашел этот вопрос, который, похоже, касается того, что я пытаюсь сделать, но, к сожалению, последняя версия jsfiddle не работает с изотопом
Вот пример моего вывода JSON:
{term_id:9, name:Milk, slug:milk, term_group:0, term_taxonomy_id:17...}
{term_id:9, name:Eggs, slug:eggs, term_group:0, term_taxonomy_id:17...}
Я использую slug
в качестве имени класса и в своем цикле.