2013-02-26 3 views
2

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

Я выбрал этот метод в противоположность методу углового штампа из-за ограничений на угловую штамповку, работая только на элементах, оправданных (из того, что я понимаю - я мог бы просто пропустить, используя это, хотя ..). Я хочу, чтобы меню было в верхнем левом углу.

Проблема, с которой я столкнулся, заключается в перемешении. Я пытаюсь рандомизировать позиции всех элементов. ИСКЛЮЧАЕТ первый элемент (в этом примере меню). Я хочу сохранить меню на своем месте. Когда я пытаюсь использовать тасование, чтобы случайным образом переупорядочить все элементы, я не могу отфильтровать свой пункт меню из доступного списка для перетасовки. Это вызывает некоторую навигацию .. проблемы, когда суб-навигатор решает улететь.

Вот пример макета: http://jsfiddle.net/ufomammut66/xwpuk/30/

До сих пор я пытался: $('.container').isotope('shuffle');

Эта функция имеет только 1 параметр - обратный вызов. Я не вижу, как я могу манипулировать процессом отбора здесь.

Я рассмотрел использование функции сортировки, но по какой-то причине я не могу получить: $('.container').isotope({ sortBy : 'random' }); стрелять не один раз. Даже если бы я это сделал, я до сих пор не вижу, как я мог бы использовать это, чтобы отфильтровать свое меню.

Любая помощь была бы принята с благодарностью, спасибо!

EDIT: Обновлена ​​ссылка jsFiddle для включения чисел на сортируемые объекты - помогает показать сортировку.

EDIT 2: Добавлена ​​более подробная информация о выпуске.

ответ

1

Я считаю, что изотопные кеши сортируются, поэтому нет необходимости пересчитывать сорт, который он уже сделал. Это даже делает это «случайным».

Исправление/хак для reloadItems после случайного рода:

$('#reorder').click(function() { 
    $('.container').isotope({sortBy: 'random'}).isotope('reloadItems'); 
}); 

Демо: http://jsfiddle.net/nT66r/

Что касается фильтрации пункта меню, случайные просто возвращает случайное число, так что не много ты можешь сделать. Тем не менее, вы можете написать собственный случайный вид, который позволил бы вам «фильтровать» меню:

getSortData: { 
    name: function ($elem) { 
     return $elem.data('name'); 
    }, 
    myrandom: function ($elem) { 
     if($elem.hasClass('menu')) { 
      return -1; 
     } 
     return Math.random(); 
    } 
} 

Демо: http://jsfiddle.net/PvnMn/

Обратите внимание, потому что menu это класс, вы оставляете себя открытым для некоторого возможного странности если имеется несколько menu элементов. Если у вас есть только один, идентификатор - лучший выбор. В этом случае вы должны использовать $elem.is('#menu') вместо $elem.hasClass('menu').

С #menu: http://jsfiddle.net/PvnMn/1/

Вот версия с моим уколом в фильтрации для других видов: http://jsfiddle.net/jtbowden/Vuqgu/

+0

Это не похоже на работу для меня. Он работал в первый раз, когда я попробовал, но при последующих сортировках и загрузках страниц он снова переупорядочивается. Хорошая информация, чтобы знать, хотя, я не понимал, что она кэшировала значения для сортировок. – ShortRound1911

+0

Разве это не должно переупорядочивать наугад? Извините, мне непонятно, какая у вас проблема. –

+0

Ах, извините за смутный вопрос. Я пытаюсь перетасовать все элементы, но первый элемент (меню). Поэтому я хотел бы, чтобы меню оставалось на месте в качестве первого элемента и все остальные элементы изотопа изменялись случайным образом. Я немного уточнил вопрос для ясности. – ShortRound1911

Смежные вопросы