実現したいこと
- 特定のスライドが表示させた時に親要素にクラスをつけたい
前提
Slickを使用してテキストコンテンツをスライドで表示させています。
スライダーの親要素(div)に背景画像を設定しているのですが、特定のスライドが表示された時のみ背景画像を変えたいです。
Slickで表示されたスライドにslick-activeというクラスがつくので、このクラスを判定材料にして親要素にクラスを付与(スライドが変わるとクラスが外れるように)しようと思うのですがうまくいきません。
発生している問題・エラーメッセージ
jsがうまく動作しない。(クラスが付与されない)
エラーなどは特に出ていません。
該当のソースコード
HTML
1<div class="slide-box">//親要素 2 <div class="slick-initialized slick-slider slick-dotted"> 3 <div class="slick-list"> 4 <div class="slick-track"> 5 <div class="slick-slide"> 6 <p>テキストコンテンツ</p> 7 </div> 8 <div class="slick-slide"> 9 <p>テキストコンテンツ</p> 10 </div> 11 <div class="slick-slide"> 12 <p>テキストコンテンツ</p> 13 </div> 14 <div class="slick-slide"> 15 <p>テキストコンテンツ</p> 16 </div> 17 <div class="slick-slide"> 18 <p>テキストコンテンツ</p> 19 </div> 20 </div> 21 </div> 22 </div> 23</div>
css
1//背景画像の部分 2.slide-box{ 3 position: relative; 4} 5 6.slide-box::before { 7 content: ''; 8 display: block; 9 position: absolute; 10 top: 0; 11 left: 0; 12 width: 100%; 13 height: 100%; 14 background-image: url('/assets/images/parts/rising-history-bg.jpg'); 15 background-repeat: no-repeat; 16 background-size: cover; 17 background-position: center; 18}
js
1$(function () { 2 if ($('.slick-slide').eq(3).hasClass('slick-active')) { 3 $('.slide-box').addClass('change'); 4 } else { 5 $('.slide-box').removeClass('change'); 6 } 7});
試したこと
背景画像を変えたい部分のスライドにクラス名を付与し、そのクラスがslick-activeがついているかどうかで判定できるか試したのですが、4番目のスライドにクラスを付与することはできましたが、スライドの親要素にはクラス(.change)が付与されませんでした。
js
1$(function () { 2 $('.slick-track .slick-slide:nth-of-type(4)').addClass('change-slide'); 3 $('.change-slide').each(function () { 4 if ($(this).hasClass('slick-active')) { 5 $('.slide-box').addClass('change'); 6 } else { 7 $('.slide-box').removeClass('change'); 8 } 9 }); 10});

回答1件
あなたの回答
tips
プレビュー