@kamelot43

Как правильно разместить несколько слайдеров (swiper) на одной странице?

Приветствую ) Стоит задача организовать множество слайдеров на мобильной версии сайта (25 штук) , при работе необходимо работать с различными методами . В связи с этим возникает вопрос : как правильно организовать код , если необходимо работать с методами у множества слайдеров (swiper) ? сейчас представленный код хоть и рабочий , но выглядит слишком раздутым и нерациональным . Как можно оптимизировать работу ?) Заранее спасибо. Буду благодарен за помощь.

var catalogSlider1 = null;
var catalogSlider2 = null;

var mediaQuerySize = 575;

/*slide-1r*/
function catalogSliderInit1 () {
  if (!catalogSlider1) {
    catalogSlider1 = new Swiper('.swiper1', {
      slidesPerView: 'auto',
      spaceBetween: 10,
      freeMode: true,
      speed: 230,

      scrollbar: {
        el: '.swiper-scrollbar',
        dragSize: '66px',
        hide: true,
      },
    });
  }


function catalogSliderDestroy1 () {
  if (catalogSlider1) {
    catalogSlider1.destroy(true, true);
    catalogSlider1 = null;
  }
}

/*slider-2*/
function catalogSliderInit2 () {
  if (!catalogSlider2) {
    catalogSlider2 = new Swiper('.swiper2', {
      slidesPerView: 'auto',
      spaceBetween: 10,
      freeMode: true,
      speed: 230,

      scrollbar: {
        el: '.swiper-scrollbar',
        dragSize: '66px',
        hide: true,
      },
    });
  }

function catalogSliderDestroy2 () {
  if (catalogSlider2) {
    catalogSlider2.destroy(true, true);
    catalogSlider2 = null;
  }
}

$(window).on('load resize', function () {
  // Берём текущую ширину экрана
  var windowWidth = $(this).innerWidth();
  
  // Если ширина экрана меньше или равна mediaQuerySize(1024)
  if (windowWidth <= mediaQuerySize) {
    // Инициализировать слайдер если он ещё не был инициализирован
    catalogSliderInit1();
    catalogSliderInit2();
  } else {
    // Уничтожить слайдер если он был инициализирован
    catalogSliderDestroy1();
    catalogSliderDestroy2();
  }
});
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@Che603000
c 2011 javascript
const mediaQuerySize = 575;
let sliders= [];
const options = {
      slidesPerView: 'auto',
      spaceBetween: 10,
      freeMode: true,
      speed: 230,

      scrollbar: {
        el: '.swiper-scrollbar',
        dragSize: '66px',
        hide: true,
      },
    });
(window).on('load resize', function () {
  // Берём текущую ширину экрана
  var windowWidth = $(this).innerWidth();
  
  // Если ширина экрана меньше или равна mediaQuerySize(1024)
  if (windowWidth <= mediaQuerySize) {
    // Инициализировать слайдер если он ещё не был инициализирован
   sliders= [
          new Swiper('.swiper1', options),
          new Swiper('.swiper2', options),
          ...
          new Swiper('.swiperN', options),
   ];
  } else {
    // Уничтожить слайдер если он был инициализирован
    sliders.forEach(slider=>slider.destroy(true, true));
    sliders=[];
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 22:48
100 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект