teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コード具体化を試みます

2018/06/06 07:59

投稿

biggee
biggee

スコア6

title CHANGED
File without changes
body CHANGED
@@ -5,25 +5,34 @@
5
5
  ヒートマップのような仕組みをjqueryで作成しており、スクロールして表示された要素すべてを取得したいと考えております。
6
6
  そのため、id,class,tagName等で要素を限定することができません。
7
7
 
8
+ ### 追記
9
+ ソースコード内に実行を試みたソースを追記しました。
10
+
11
+
8
- ### 該当のソースコード
12
+ ### ソースコード
9
13
  ```jquery
14
+ $(window).on('resize load scroll', function(){
10
- var win_scr = $(window).scrollTop();
15
+ var win_scr = $(window).scrollTop();
11
- var win_h = $(window).height();
16
+ var win_h = $(window).height();
12
- var elem_pos = $('XXX').offset().top; //すべて要素 の位置
17
+ var elem = $('body').find('*'); //すべて要素が取得できることを確認
13
- var elem_scr = $('XXX').scrollTop(); //
18
+  var elem_pos = elem.offset().top; //body内最初の子要素のoffsetTopを取得する .....課題1
14
19
 
15
- //scrollで画面内の判定
20
+  //scrollで画面内の判定
16
- if(elem_pos - win_h > win_scr) {
21
+ if(elem_pos - win_h > win_scr && elem_pos < win_h) { //elemが画面内に入ったとき、elem_posが画面の高さより小さいとき
17
- //elemが画面内に入ったときに行う処理。elemが取れないので成り立たない。。
22
+ //課題:このときのelem_posが取れないので判定ができず下記が実行されない
23
+ elem.each(function() { //elemに対して
24
+ var t = $(this); //win_h内に入った要素をthisに入れる .....課題2
25
+ t_tag = t[0].tagName; //DOMにしてtag名を取得
26
+ console.log(t_tag); //tag名を表示
27
+ }
28
+ }
18
29
  }
19
- ```
20
30
 
21
- ### 試したこと
22
31
  ```
23
- //すべての要素
24
- $('body').find('*'); //全部のタグは取れたが、、
25
32
 
26
- ```
33
+ ### 課題
34
+ 課題1:elem_posを条件式に使いたいが、ここで取れるのはbodyの最初の要素だけ。
35
+ 課題2:$(this)がwin_h内に入った要素を取得できていない
27
36
 
28
37
 
29
- 拙い説明ですが、どなたかよろしくお願いいたします。
38
+ 拙い説明ですが、よろしくお願いいたします。