RainMEN
@RainMEN
HTML/STYLUS/JADE/JS/Laravel/Joomla/DLE и т.д.

Как сделать бесконечное число слайдеров на странице?

Юзаю Swiper slider, и возникла необходимость сделать неограниченное количество слайдеров. Вроде все работает, но вот не задача, инициализация делается вот так:

var swiper = new Swiper('.swiper-container', {
    nextButton: '.swiper-button-next',
    prevButton: '.swiper-button-prev',
    loop: true,
    preloadImages: false,
    // Enable lazy loading
    lazyLoading: true
});


Естественно, когда я нажимаю на любую стрелку перелистывания слайда например swiper-button-next, у меня перелистываются все слайдеры сразу. Проблема в том, что если выводить неограниченное количество слайдеров, придется в каждом слайдере писать свой класс, и несколько раз дублировать js.

Мне кажется, как-то это не хорошо.

Как можно это упростить?
  • Вопрос задан
  • 6039 просмотров
Решения вопроса 1
batareika
@batareika
В последнем проекте использовал такой код для вывода множества одинаковых каруселей:
var tileSlider = $('.tile-slider');
tileSlider.each(function(){
    var mySwiper = new Swiper(this, {
        loop: true,
        nextButton: $(this).parent().find('.tile-slider-next')[0],
        prevButton: $(this).parent().find('.tile-slider-prev')[0]
    });
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
перебрать их все $('.swiper-container').each(index, element)и подключить слайдер к каждому отдельно
Ответ написан
thisishappi
@thisishappi
Верстальщик=)
var gallerySlider = new Swiper ('.gallery-slider', {
	direction: 'horizontal',
	loop: true,
	slidesPerView: 4,
	observer: true,
	onInit: function(swiper){
		var galleryID= swiper.container[0].id;
		swiper.nextButton = $('#'+galleryID+' .gallery-button-next');
		swiper.prevButton = $('#'+galleryID+' .gallery-button-prev');
		swiper.nextButton.click(function(){
			swiper.slideNext();
		});
		swiper.prevButton.click(function(){
			swiper.slidePrev();
		});
	}
});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽