質問編集履歴
1
コード具体化を試みます
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
|
17
|
+
var elem = $('body').find('*'); //すべての要素が取得できることを確認
|
13
|
-
var
|
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
|
-
|
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
|
+
拙い説明ですが、よろしくお願いいたします。
|