以下のHTMLのように同じクラス名が複数あるのですが、一つずつに対して「スクロールして要素が表示されたらクラス付与」をやりたいです。
html
1<section> 2 <div class="ttile">title</div> 3 <div class="detail">detail</div> 4</section> 5<section> 6 <div class="ttile">title</div> 7 <div class="detail">detail</div> 8</section>
下記のようにすると、たぶんクラスが複数あるせいだと思うのですが一気にすべてにis-showが付与されてしまいます。
js
1$(window).on('scroll', function() { 2 add_class_in_scrolling( $('.title') ); 3 add_class_in_scrolling( $('.detail') ); 4}); 5 6// スクロールで要素が表示された時にclassを付与する 7function add_class_in_scrolling( $target ) { 8 var winScroll = $(window).scrollTop();//スクロールの上下位置を取得 9 var winHeight = $(window).height();//ウィンドウの高さを取得 10 var scrollPos = winScroll + winHeight;//上記の合計(スクロールポジション) 11 12 if($target.offset().top < scrollPos) {//classをつけたい要素の上下位置がスクロールポジションより小さい場合=ウィンドウ内に表示された場合 13 $target.addClass('is-show'); 14 } 15}
読み込み時にこれらの同一クラスに番号を振ったらどうかと思ったのですが、スクロール時に表示された要素が何番なのか取得できずにこの方法も見送りました。
js
1$('.I_FrontDesc_title').each(function(n){ 2 $(this).addClass('number-' + n) 3});
どうしたら今回のように同じクラスが複数あるケースでもできるようになりますか?
回答1件
あなたの回答
tips
プレビュー