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

回答編集履歴

1

おまけ追加

2018/08/02 08:56

投稿

miyabi-sun
miyabi-sun

スコア21472

answer CHANGED
@@ -19,4 +19,28 @@
19
19
  基本的には1画面内に1〜2個しか存在出来ないんじゃないですか?
20
20
 
21
21
  だったら画面外に居るはずの2〜3個を操作し続けるのは完全に無駄な計算ですよね。
22
- なので、今のスクロール位置、画面の縦幅からどこからどこを表示しているのかを求めて関係ない所はアニメーションしないようにすれば、計算量は1/2〜1/4に収まるんじゃないですか?
22
+ なので、今のスクロール位置、画面の縦幅からどこからどこを表示しているのかを求めて関係ない所はアニメーションしないようにすれば、計算量は1/2〜1/4に収まるんじゃないですか?
23
+
24
+ ---
25
+
26
+ 【おまけ】 別の箇所も思いついたので…
27
+
28
+ `$('.para').each`もコストが高かったので連絡。
29
+
30
+ ```JavaScript
31
+ $(function () {
32
+ // スクロールの度に全DOMを検索して`para`を探すのでダメ
33
+ $(window).on('load scroll', function () {
34
+ $('.para').each(fn);
35
+ });
36
+ });
37
+
38
+ $(function () {
39
+ // このように予め変数に保存しておくのだ。
40
+ var $para = $('.para');
41
+ $(window).on('load scroll', function () {
42
+ // すでに変数にキャッシュ済みなのでDOM検索は行われない
43
+ $para.each(fn);
44
+ });
45
+ });
46
+ ```