前提・実現したいこと
・モーダル内で slickスライダーを表示させており、クリックしたボタンによって初期スライド位置を変更したいのです。
・ボタンをクリックするとすべて同一のモーダルが開きます。
・ボタンをクリックすると、初期表示するスライドの番号を取得します。
・その番号を slickSetOption で initialSlide の値としてセットしたいのですがうまくいきません。
※slick公式サイト: http://kenwheeler.github.io/slick/
現在の挙動
・表示したいスライド番号は取得できているが、どのボタンをクリックしても1番目のスライドが表示されてしまう。
・モーダルを開いた状態で、スライドを変更してからモーダルを閉じると、最後に表示されていたスライドが次回 初期表示される。
該当のソースコード
html
1<ul> 2 <li><button class="modal" data-tgt="modal1">スライド(1)</button></li> 3 <li><button class="modal" data-tgt="modal1" data-slide="1">スライド(2)</button></li> 4 <li><button class="modal" data-tgt="modal1" data-slide="2">スライド(3)</button></li> 5 <li><button class="modal" data-tgt="modal1" data-slide="3">スライド(4)</button></li> 6</ul>
javaScript
1var slideNum = 0; 2 3// modal 4$('.modal').on('click', function () { 5 var $modal = $('#' + $(this).attr('data-tgt')); 6 var $overlay = $('.modal_overlay'); 7 8 if($(this).attr('data-slide')) { 9 slideNum = $(this).attr('data-slide'); 10 modalSlider.slick('slickSetOption', 'initialSlide', slideNum, true); 11 } 12 13 modalSlider.slick('setPosition'); // 初期化 14 $overlay.fadeIn(); 15 $modal.show(); 16}); 17 18 19// modal slider 20var modalSlider = $('.modal_slider').slick({ 21 autoplay: false, 22 slidesToShow: 1, 23 slidesToScroll: 1, 24 infinite: true, 25 arrows: true, 26 initialSlide: slideNum 27});
回答1件
あなたの回答
tips
プレビュー