質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1806閲覧

スクロール時に画面内にある不特定のタグを取得する方法

biggee

総合スコア6

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/06/06 06:57

編集2018/06/06 07:59

前提・実現したいこと

初心者です。
ブラウザ内をスクロールし、画面に入ってきた要素を取得する方法を模索しております。
ヒートマップのような仕組みをjqueryで作成しており、スクロールして表示された要素すべてを取得したいと考えております。
そのため、id,class,tagName等で要素を限定することができません。

追記

ソースコード内に実行を試みたソースを追記しました。

ソースコード

jquery

1$(window).on('resize load scroll', function(){ 2 var win_scr = $(window).scrollTop(); 3 var win_h = $(window).height(); 4 var elem = $('body').find('*'); //すべての要素が取得できることを確認 5 var elem_pos = elem.offset().top; //body内最初の子要素のoffsetTopを取得する .....課題1 6 7 //scrollで画面内の判定 8 if(elem_pos - win_h > win_scr && elem_pos < win_h) { //elemが画面内に入ったとき、elem_posが画面の高さより小さいとき 9 //課題:このときのelem_posが取れないので判定ができず下記が実行されない 10 elem.each(function() { //elemに対して 11 var t = $(this); //win_h内に入った要素をthisに入れる .....課題2 12 t_tag = t[0].tagName; //DOMにしてtag名を取得 13 console.log(t_tag); //tag名を表示 14 } 15 } 16} 17

課題

課題1:elem_posを条件式に使いたいが、ここで取れるのはbodyの最初の要素だけ。
課題2:$(this)がwin_h内に入った要素を取得できていない

拙い説明ですが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/06/06 07:08

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
biggee

2018/06/06 07:59

ありがとうございます。追記しました。
guest

回答1

0

IntersectionObserverで取得できます。

JavaScript

1$(function() { 2 let observer = new IntersectionObserver(function(entries, observer) { 3 for (const entry of entries) { 4 if (entry.intersectionRatio > 0) { 5 console.log(entry); 6 } 7 } 8 }); 9 10 $('body').find('*').each(function(index, element) { 11 observer.observe(element); 12 }); 13});

https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver
https://sbfl.net/blog/2017/07/04/javascript-intersection-observer/

投稿2018/06/06 08:30

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

biggee

2018/06/06 08:40 編集

早速ありがとうございます! 初めて知りました。。リンクのドキュメント見て試してみます。 CANIUSE見るとIE,safariは未対応ということで、今回は別の方法を模索する必要がありそうです。 でもありがとうございます。
biggee

2018/06/06 09:04

失礼しました。確認していませんでした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問