回答編集履歴

4

コードのインデントを微修正

2015/07/03 16:36

投稿

flat
flat

スコア617

test CHANGED
@@ -40,13 +40,13 @@
40
40
 
41
41
  $( "#click" ).click( function() {
42
42
 
43
- var i = $( "#click" ).index( this );
43
+ var i = $( "#click" ).index( this );
44
44
 
45
- var p = $( "#goal" ).eq( i ).offset().top;
45
+ var p = $( "#goal" ).eq( i ).offset().top;
46
46
 
47
- $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
47
+ $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
48
48
 
49
- return false;
49
+ return false;
50
50
 
51
51
  });
52
52
 

3

コードの整形と問題点のまとめ

2015/07/03 16:36

投稿

flat
flat

スコア617

test CHANGED
@@ -1,32 +1,28 @@
1
- 原因は`return false;`によるリンク機能の無効化です。
2
-
3
- `return false;`記述てみて下さい
1
+ 問題ありそうな部分まとめま(+αもあり)
4
2
 
5
3
 
6
4
 
7
- 追記
5
+ コード内のダブルクォーテーションがおかしいです。
8
6
 
9
- 上の内容は私の勘違で、多分関係無いで…。
7
+ `$(“#click")`などを`$("#click")`に変えてみて下さ。(左ダブルクォーテーション(全角)「“」をダブルクォーテーション(半角)「"」に直)
10
8
 
11
9
 
12
10
 
11
+ また、変数 i をセミコロンで閉じ忘れています。
12
+
13
- 確かscrollTopはWebkit系ではbodyを、それ以外ではhtmlを指定しなければいけないという問題があったと思うので、それが関係しているのではないでしょうか。
13
+ `var i = $(“#click").index(this)`→`var i = $( "#click" ).index( this );`
14
14
 
15
15
 
16
-
17
- 参考ページ
18
-
19
- [jQuery 1.9 で $.browser が使えなくなってしまった対策 | CYOKODOG](http://www.cyokodog.net/blog/jquery19-browser/)
20
16
 
21
17
  ```lang-JavaScript
22
18
 
23
19
  // scrollTopがhtmlとbodyどちらで機能するか判別する関数
24
20
 
25
- var isHtmlScroll = ( function () {
21
+ var isHtmlScroll = ( function() {
26
22
 
27
- var html = $( 'html' ), top = html.scrollTop();
23
+ var html = $( "html" ), top = html.scrollTop();
28
24
 
29
- var el = $( '<div/>' ).height( 10000 ).prependTo( 'body' );
25
+ var el = $( "<div/>" ).height( 10000 ).prependTo( "body" );
30
26
 
31
27
  html.scrollTop( 10000 );
32
28
 
@@ -42,11 +38,11 @@
42
38
 
43
39
 
44
40
 
45
- $("#click").click(function(){
41
+ $( "#click" ).click( function() {
46
42
 
47
- var i = $("#click").index(this)
43
+ var i = $( "#click" ).index( this );
48
44
 
49
- var p = $("#goal").eq(i).offset().top;
45
+ var p = $( "#goal" ).eq( i ).offset().top;
50
46
 
51
47
  $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
52
48
 
@@ -56,14 +52,10 @@
56
52
 
57
53
  ```
58
54
 
55
+ `isHtmlScroll`の参考ページ
56
+
59
- 尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理発生してしまうのを防ぐめのものです。
57
+ [jQuery 1.9 で $.browser使えなくなってしま対策 | CYOKODOG](http://www.cyokodog.net/blog/jquery19-browser/)
60
58
 
61
59
 
62
60
 
63
- 更に追記
64
-
65
- よく見ると質問にあるコード内のダブルクォーテーションがおかしいです
66
-
67
-
68
-
69
- `$(“#click")`などを`$("#click")`に変えみて下さい。(左ダブルテーション(全角)「“」ダブルクォーテーション(半角)「"」に直)
61
+ 尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理が発生してしまうの防ぐためのもので

2

更に修正

2015/07/03 15:05

投稿

flat
flat

スコア617

test CHANGED
@@ -42,13 +42,13 @@
42
42
 
43
43
 
44
44
 
45
- $(#click").click(function(){
45
+ $("#click").click(function(){
46
46
 
47
- var i = $(#click").index(this)
47
+ var i = $("#click").index(this)
48
48
 
49
- var p = $(#goal").eq(i).offset().top;
49
+ var p = $("#goal").eq(i).offset().top;
50
50
 
51
- $( isHtmlScroll ? 'html' : 'body' ).not( ':animated' ).animate( { scrollTop: p }, 800 );
51
+ $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
52
52
 
53
53
  return false;
54
54
 
@@ -57,3 +57,13 @@
57
57
  ```
58
58
 
59
59
  尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理が発生してしまうのを防ぐためのものです。
60
+
61
+
62
+
63
+ 更に追記
64
+
65
+ よく見ると質問にあるコード内のダブルクォーテーションがおかしいです
66
+
67
+
68
+
69
+ `$(“#click")`などを`$("#click")`に変えてみて下さい。(左ダブルクォーテーション(全角)「“」をダブルクォーテーション(半角)「"」に直す)

1

修正

2015/07/03 14:52

投稿

flat
flat

スコア617

test CHANGED
@@ -1,3 +1,59 @@
1
1
  原因は`return false;`によるリンク機能の無効化です。
2
2
 
3
3
  `return false;`の記述を外してみて下さい。
4
+
5
+
6
+
7
+ 追記
8
+
9
+ 上の内容は私の勘違いで、多分関係無いです…。
10
+
11
+
12
+
13
+ 確かscrollTopはWebkit系ではbodyを、それ以外ではhtmlを指定しなければいけないという問題があったと思うので、それが関係しているのではないでしょうか。
14
+
15
+
16
+
17
+ 参考ページ
18
+
19
+ [jQuery 1.9 で $.browser が使えなくなってしまった対策 | CYOKODOG](http://www.cyokodog.net/blog/jquery19-browser/)
20
+
21
+ ```lang-JavaScript
22
+
23
+ // scrollTopがhtmlとbodyどちらで機能するか判別する関数
24
+
25
+ var isHtmlScroll = ( function () {
26
+
27
+ var html = $( 'html' ), top = html.scrollTop();
28
+
29
+ var el = $( '<div/>' ).height( 10000 ).prependTo( 'body' );
30
+
31
+ html.scrollTop( 10000 );
32
+
33
+ var rs = !!html.scrollTop();
34
+
35
+ html.scrollTop( top );
36
+
37
+ el.remove();
38
+
39
+ return rs;
40
+
41
+ })();
42
+
43
+
44
+
45
+ $(“#click").click(function(){
46
+
47
+ var i = $(“#click").index(this)
48
+
49
+ var p = $(“#goal").eq(i).offset().top;
50
+
51
+ $( isHtmlScroll ? 'html' : 'body' ).not( ':animated' ).animate( { scrollTop: p }, 800 );
52
+
53
+ return false;
54
+
55
+ });
56
+
57
+ ```
58
+
59
+ 尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理が発生してしまうのを防ぐためのものです。