Как сделать чтобы слайдер начинался с элемента на который кликнули?

101
14 сентября 2019, 22:20

galkam.ru/pamatniki/mramornyie.html Есть страница, на ней расположены карточки товара. При клике на карточку товара открывается модальное окно, а в нем слайдер.

$('.modal').on('shown.bs.modal', function () {
$('.slider__prod').slick({
        arrows: true,
        prevArrow: '<button class="slick-prev slick-arrow" aria-label="Prev" type="button" style=""><i class="fa fa-chevron-left" aria-hidden="true"></i></button>',
        nextArrow: '<button class="slick-next slick-arrow" aria-label="Next" type="button" style=""><i class="fa fa-chevron-right" aria-hidden="true"></i></button>'
   });
})

Сейчас при клике на любом товаре слайдер открывается с первого элемента. Как сделать чтобы слайдер начинался с выбранного элемента? Добавил карточкам товара дата атрибут data-num. У слик слайдера есть параметр слайд с которого должен начинаться слайдер initialSlide, но он принимает целое число и я не могу туда строку с именем переменной которая хранит дата атрибут выбранного элемента. Борюсь с проблемой пару дней и уже в голове каша. Пытался сделать с помощью фильтра но не получилось Сейчас код выглядит так. Всю кашу закоментировал

    $('.modal').on('shown.bs.modal', function () {
    $('.slider__prod').slick({
                // initialSlide: 1,
                arrows: true,
                prevArrow: '<button class="slick-prev slick-arrow" aria-label="Prev" type="button" style=""><i class="fa fa-chevron-left" aria-hidden="true"></i></button>',
                nextArrow: '<button class="slick-next slick-arrow" aria-label="Next" type="button" style=""><i class="fa fa-chevron-right" aria-hidden="true"></i></button>'
        });
});
//   var currentSlide = $('.slider__prod').slick('slickCurrentSlide');
//   function filterSlider(atrnum) {
//     $('.slider__prod').slick('slickUnfilter');
//     $('.slider__prod').slick('slickFilter', function() {
//       return $('+atrnum+', this).length === 1;
//     });

//     $('.b1').on('click', function(e) {
//         var atrnum = ($(this).attr('data-num'));
//     });
//     var slideindex = ($('.slick-slide').attr('data-slick-index'));
//     $(".col[data-num] a").on('click', function(e){
//       var index = $(".col[data-num]:visible a").index(this);
//       $(".slider__prod").slick('slickUnfilter');
//     // if(atrnum == slideindex){
//     //   $(".slider").slick('slickFilter','.slick-slide['data-slick-index]=slideindex');
//       if ($('.b1').attr('data-num') == slideindex) {
//           $('.slick-slide').addClass('act')
//           $('.slider__prod').slick('slickFilter','.act');
//       };
//     //  }



// });
    $('.modal').on('hidden.bs.modal', function (e) {
        $('.slider__prod').slick('unslick');
    })
Answer 1

data-атрибут вы можете получить из объекта e, вот пример:

$('.modal').on('shown.bs.modal', function (e) {
  var initialSlide = $(e.relatedTarget).data('num');
  $('.slider__prod').slick({
    initialSlide: initialSlide,
    arrows: true,
    prevArrow: '',
    nextArrow: ''
  });
});

Это сработает если

READ ALSO
Как сделать проверку на свободное время для записи в Yii2?

Как сделать проверку на свободное время для записи в Yii2?

разрабатываю систему для записи съемок , хотелось бы узнать как проверять на свободное время человека для записи, день и время, (аналогия...

123
Расширение таблицы или связь один ко одному [закрыт]

Расширение таблицы или связь один ко одному [закрыт]

Есть таблица user_card, хранит данные о пользователях сайтаЕсть сотрудники, которые как и остальные пользователи регистрируются на сайте и попадают...

111
Не работает required в форме

Не работает required в форме

Все поля имеют атрибут required, обязательное поле, но даже если вообще ничего не заполнять, все равно идет отправка

152
Как поставить элементы ::before на списке li

Как поставить элементы ::before на списке li

Как выровнять мои элементы before от текста?

116