kenwheeler / slick как получить текущий слайд в качестве объекта dom или jquery?

используя пятно, у меня есть простая карусель по строкам:

<div class="carousel">
  <div class="image"><img src="http://path/to/image.jpg" data-caption="Caption 1"></div>
  <div class="image"><img src="http://path/to/image2.jpg" data-caption="Caption 2"></div>
  <div class="image"><img src="http://path/to/image3.jpg" data-caption="Caption 3"></div>
</div>

Я инициализирую карусель с помощью onAfterChange функция, чтобы попытаться обновить заголовок в другом div, но я немного смущен тем, как получить этот div как объект dom или jquery?

$('.carousel').slick({
  lazyLoad: 'progressive',
  onAfterChange: function(slider,index){
    console.log(???);
  }
});

здесь slider возвращает объект карусели и index возвращает текущий слайд.

как я мог получить data-caption значение из этого?

3 ответов


Arg, извините, я нашел решение по проблеме github под названием доступ к текущим атрибутам слайдов в onAfterChange #411.

slider относится к карусели, поэтому можно получить доступ к слайдеру так:

$(slider) и может получить доступ к конкретному слайду с $(slider.$slides.get(index))

поэтому в отношении моего вопроса выше, это было бы просто:

$(slider.$slides.get(index)).data('caption');

попробуй такое

$('.carousel').on('afterChange', function() {
    var dataId = $('.slick-current').attr("data-slick-index");    
    console.log(dataId);
});

До

jQuery('.pt-slick-carousel__slides').on('beforeChange', function(event, slick, currentSlide, nextSlide){
        console.log(jQuery('.pt-slick-carousel__slides .slick-active').attr('data-slick-index'));
        console.log(jQuery('.pt-slick-carousel__slides .slick-active').attr('id'));
});

AfterChange

jQuery('.pt-slick-carousel__slides').on('afterChange', function(event, slick, currentSlide, nextSlide){
        console.log(jQuery('.pt-slick-carousel__slides .slick-active').attr('data-slick-index'));
        console.log(jQuery('.pt-slick-carousel__slides .slick-active').attr('id'));
});