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

回答編集履歴

4

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

2015/07/03 16:36

投稿

flat
flat

スコア617

answer CHANGED
@@ -19,10 +19,10 @@
19
19
  })();
20
20
 
21
21
  $( "#click" ).click( function() {
22
- var i = $( "#click" ).index( this );
22
+ var i = $( "#click" ).index( this );
23
- var p = $( "#goal" ).eq( i ).offset().top;
23
+ var p = $( "#goal" ).eq( i ).offset().top;
24
- $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
24
+ $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
25
- return false;
25
+ return false;
26
26
  });
27
27
  ```
28
28
  `isHtmlScroll`の参考ページ

3

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

2015/07/03 16:36

投稿

flat
flat

スコア617

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

2

更に修正

2015/07/03 15:05

投稿

flat
flat

スコア617

answer CHANGED
@@ -20,11 +20,16 @@
20
20
  return rs;
21
21
  })();
22
22
 
23
- $(#click").click(function(){
23
+ $("#click").click(function(){
24
- var i = $(#click").index(this)
24
+ var i = $("#click").index(this)
25
- var p = $(#goal").eq(i).offset().top;
25
+ var p = $("#goal").eq(i).offset().top;
26
- $( isHtmlScroll ? 'html' : 'body' ).not( ':animated' ).animate( { scrollTop: p }, 800 );
26
+ $( isHtmlScroll ? "html" : "body" ).not( ":animated" ).animate( { scrollTop: p }, 800 );
27
27
  return false;
28
28
  });
29
29
  ```
30
- 尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理が発生してしまうのを防ぐためのものです。
30
+ 尚、`.not( ':animated' )`は連続してクリックした時にクリックした回数分アニメーションの処理が発生してしまうのを防ぐためのものです。
31
+
32
+ 更に追記
33
+ よく見ると質問にあるコード内のダブルクォーテーションがおかしいです
34
+
35
+ `$(“#click")`などを`$("#click")`に変えてみて下さい。(左ダブルクォーテーション(全角)「“」をダブルクォーテーション(半角)「"」に直す)

1

修正

2015/07/03 14:52

投稿

flat
flat

スコア617

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