slick を使用すると、次の行に沿って単純なカルーセルが作成されます。
<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
値を取得するにはどうすればよいですか?
Arg、お詫びします。githubの問題の解決策を見つけました onAfterChange#411の現在のスライド属性へのアクセス 。
slider
はカルーセルを参照するため、スライダーにアクセスすると次のようになります。
$(slider)
そして$(slider.$slides.get(index))
で特定のスライドにアクセスできます
したがって、上記の私の質問を参照すると、次のようになります。
$(slider.$slides.get(index)).data('caption');
$('.SlickContainer').on('beforeChange', function(event, slick, currentSlide, nextSlide){
var CurrentSlideDom=$(slick.$slides.get(currentSlide));
var NextSlideDom=$(slick.$slides.get(nextSlide));
});
これを試して
$('.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'));
});