前提
slickを使用して、PC時は3個、SP時は1個スライドが並ぶようなスライダーを作成しました。
実現したいこと
slickで作成したスライド画像の一部に、モーダルウインドウが開くボタンを設置しており、クリックすると開くようにしています。
slickスライダーのインデックス番号と同じ番号のモーダルウィンドウを表示するようにしたいのですが、slickのメソッドである「slickCurrentSlide」を使用してインデックス番号を取得すると、スライドが3つ並んでいる時は、最初に表示されている3つすべてがインデックス番号「0」になってしまいます。4つめ以降のスライドには、0、1、2、3、4、0、1、2、3…と順番になっているのですが…
最初に表示される3つのスライドにも、0、0、0ではなく、0、1、2とインデックス番号をつけたいのですが、調べても思うような答えが得られませんでした。
モーダルウィンドウは全画面で表示されるようにしたいので、インデックス番号を使わずに兄弟要素取得などで実装しようかとも思ったのですが、スライダーの大きさやpositionの関係で、インデックス番号を使ってやるのがいいかと思いました。
slickCurrentSlideをしようして実装しようとしていますが、他にも方法があるならこだわりません。
該当のソースコード
HTML
1<!--モーダルウィンドウ--> 2<div class="mordal__wrap"> 3 <div>1つめ</div> 4 <div>2つめ</div> 5 <div>3つめ</div> 6 <div>4つめ</div> 7 <div>5つめ</div> 8</div> 9 10<!--スライダー--> 11<div class="slider"> 12 <div class="slider__item"> 13 <img src="..."> 14 <div class="js-open">モーダルウインドウが開くボタン</div> 15 </div> 16 <div class="slider__item"> 17 <img src="..."> 18 <div class="js-open">モーダルウインドウが開くボタン</div> 19 </div> 20 <div class="slider__item"> 21 <img src="..."> 22 <div class="js-open">モーダルウインドウが開くボタン</div> 23 </div> 24 <div class="slider__item"> 25 <img src="..."> 26 <div class="js-open">モーダルウインドウが開くボタン</div> 27 </div> 28 <div class="slider__item"> 29 <img src="..."> 30 <div class="js-open">モーダルウインドウが開くボタン</div> 31 </div> 32</div> 33
JS
1$(function(){ 2 $('.slider').slick({ 3 arrows: false, 4 dots: true, 5 slidesToShow: 3, 6 responsive: [ 7 { 8 breakpoint: 1023, 9 settings: { 10 slidesToShow:1 11 } 12 } 13 ] 14 }); 15 $('.js-open').click(function(){ 16 var i = $('.member__slider').slick('slickCurrentSlide'); 17 $('.mordal__inner').eq(i).children('div').fadeIn(); 18 }); 19 $('.js-close').click(function () { 20 $('div').fadeOut(); 21 }); 22}); 23
試したこと
jqeuryで.index()を使ったり、
スライダーの中にモーダルウィンドウをいれたり、いろいろやってみましたが、できませんでした。
補足情報(FW/ツールのバージョンなど)
HTMLのソースコードは簡略化しています。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/11 02:18