###スクロール時に、任意の要素が画面内に入ってきた時に「1度だけ」処理を実行したい
- スクロールする
- 任意の要素が画面内に入っているか確認する
- 入っていれば処理を行い、以降は処理を行わない
※jquery の one() のようなイメージです。
javascript(jquery)にて、上記のようなことを実現したいのですが、
下記のコードでは、スクロールするたびに処理が発生してしまいます。
###該当のソースコード
javascript
1 $(window).scroll(function(){ 2 var scrollTop = $(window).scrollTop(); 3 4 $('.hoge').each(function() { 5 var top = $(this).offset().top; 6 if(scrollTop > top){ 7 console.log('once!'); // 一度だけ実行させたい処理 8 } 9 }); 10 11 });
###試したこと
そこで実行済みであることを保存する変数を試してみましたが、うまく動かず。。。
やり方もスマートでない気がします。
javascript
1 $(window).scroll(function(){ 2 var scrollTop = $(window).scrollTop(); 3 4 $('.hoge').each(function() { 5 var top = $(this).offset().top; 6 var used = false; 7 if(scrollTop > top && used === false){ 8 console.log('once!'); 9 used = true; 10 } 11 }); 12 13 });
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/17 15:14
2016/08/17 15:28
2016/08/18 09:16