@me2you

Как правильно связать Ion.RangeSlider + Isotope + LazyLoad?

Добрый день, помогите правильно сделать связку Ion.RangeSlider + Isotope + LazyLoad для фильтрации и вывода контента.

За основу был взят пример из данного топика по привязке noUiSlider.

Как смог переделал на Ion.RangeSlider, потому что он выводит сразу всю нужную информацию и смотрится шикарно =) Живой пример на jsdiddle не претендует на звание красивого кода... К сожалению, не очень силен в этом.

Суть работы:

Три слайдера, в зависимости от выбранных значений фильтруют и водят нужные изображения.

Описание элемента

<div class="grid-item">
                    <img src="" class="lazy" data-original="http://placehold.it/100x100" />
                    <p class="id">1</p>
                    <!-- Параметр для слайдера 1 -->
                    <p class="size-max">46</p>
                    <!-- Параметр для слайдера 2 -->
                    <p class="size-min">40</p>
                    <!-- Параметр для слайдера 3 -->
                    <p class="region">0</p>
                </div>


Проблемы:

  1. Самая большая проблема это парсинг документа для поиска элементов в диапазоне в функции multipleFilter()... Когда элементов было 100 это было еще рабочим решением, но никто не знал что это не все данные... И сейчас их стало чуть больше трех тысяч... да, да 3000 Карл!... При таком парсинге Dom строится за 5 секунд (ужос). Что с этим делать, как оптимизировать find()?
  2. Вторая проблема, lazyload подгружает ВСЕ картинки после загрузки страницы, а не по требованию, т.е. не те что отфильтрованы и должны быть выведены через isotope. Отдельный пример на связку Isotope + Lazyload на jsfiddle.
  3. Третье, что при всех этих проблемах... вся страница подгружается за 30 сек и конечно это дикий ужос...


Пробовал отказаться от вывода значения из слайдера на страницу xxx.html(data.from), в принципе это ненужно, а сразу передавать значение в переменную в фильтр.. но это не спасает от задумчивости парсинга такого количества элементов...

Возможно это был не оптимальный путь, может быть есть какие-то другие решения?

В тупике, надеюсь на помощь профессионалов в этой области.

P.S. Заменил пример, Dom грузится быстрее, но LazyLoad так и не работает =(
P.S... Что-то оказывается и неверно фильтруется..
  • Вопрос задан
  • 489 просмотров
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
1. Используйте react.js для отрисовки контента, он отлично справиться с тысячами элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы