質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

587閲覧

jQuery内部の処理を知りたい

siebzehn

総合スコア2

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2023/02/05 08:52

知りたいこと

javascript上でscrollイベントを記述して実行した際に、実際のjQuery内では具体的にどのような動きが行われているのかを知りたいです。

実装コード

javascript

1$(function () { 2 $('#MainCotent_aaa').scroll(function () { 3 var top = 0; 4 top = $(this).scrollTop(); 5 //上記で取得した値によって、これ以降で各種処理を実施 6 }); 7}); 8コード

jQuery内のソースとの関係で不明なこと。

上のように記述した場合に、まずscrollの内容が実行されると思うのですが、具体的にjQuery側でどのような処理したうえで、こちら側に処理が戻ってきて、自分が書いたコードの処理に移っていくのかが全然わからないです。

開発者ツールでデバッグ実行してみたところ、jQueryの下記の記載部分を示したのですが、

①内部的にどういう風に処理が実行されているかを知りたいです。eachと使われているので何かしら繰り返し処理をしている、ということなのでしょうか?

②この処理が実行される場合に「name」とか「data」とかが渡されているのでしょうか?(それが具体的にどういうものかは全然わかりませんけど)

③スクロールのイベントというのは、スクロールが動いている間はずっと処理される、みたいなことがネットで調べてみたら書いてありましたが、そもそも動いている間ってのが具体的にどこからどこまでなのかがよくわからないです。「eachが使われている間」=「スクロールバーが動いている間」ということでしょうか?

jQuery

1jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 2 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 3 "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 4 5 // Handle event binding 6 jQuery.fn[ name ] = function( data, fn ) { 7 return arguments.length > 0 ? 8 this.on( name, null, data, fn ) : 9 this.trigger( name ); 10 }; 11});

最後に

いろいろ質問させていただきましたが、何かしら情報をお持ちの方がいましたらご教示いただければ幸いです。どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

上のように記述した場合に、まずscrollの内容が実行されると思うのですが

されません。イベントの登録だけです。

投稿2023/02/05 09:15

編集2023/02/05 09:16
maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/02/05 09:17

> eachと使われているので何かしら繰り返し処理をしている、ということなのでしょうか? 上に並んでいる「blur focus focusin focusout load resize scroll unload click dblclick」といった各イベント名すべてについて同じ操作を行う、ということです(scrollもその1つです)。
maisumakun

2023/02/05 09:18

> ②この処理が実行される場合に「name」とか「data」とかが渡されているのでしょうか?(それが具体的にどういうものかは全然わかりませんけど) はい。処理途中にブレークポイントを仕掛ければ、何が来ているか確認できます。
siebzehn

2023/02/05 10:52

maisumakun様 回答ありがとうございます。 >イベントの登録だけです。 「イベントの登録」というのは、具体的にどういう状態(状況)を言うのでしょうか?
maisumakun

2023/02/05 10:58

すみません、「scrollの内容」を「引数として渡した関数」の意味に解釈していました。 jQuery.fn[ name ] =以下の関数は、.scroll(関数)で実行されます。
siebzehn

2023/02/05 11:52

maisumakun様 回答ありがとうございます。 >jQuery.fn[ name ] =以下の関数は、.scroll(関数)で実行されます としますと(自分の解釈が間違っていなければ)、 arguments.lengt、すなわち引数の長さで(0以上で) 「this.on」か「this.trigger」のどちらかを実行するということになりますが、 この引数というのは何に該当するのでしょうか? scrollを実行しようとして記述してある、 function () { var top = 0; top = $(this).scrollTop(); //上記で取得した値によって、これ以降で各種処理を実施 } この部分全体が引数という扱いなんでしょうか?
maisumakun

2023/02/05 11:54

> この部分全体が引数という扱いなんでしょうか? はい、関数1つが引数です。
siebzehn

2023/02/05 12:10

maisumakun様 回答ありがとうございます。 おおよそ(おおまか)ではありますが、質問前よりは理解が深まりました。 ちなみに他のイベントの場合は違うのかもしれませんが、 scrollイベントというのはスクロールの間はずっと処理が行われる、 みたいなことが情報としていろいろ出ていますが、 この「ずっと処理が行われる」というのは、「jQuery.fn[ name ] =以下の関数」が 何度も実行される、ということなのでしょうか? ※本題から少しずれているように感じますが、興味本位で聞いております。すみません。。
maisumakun

2023/02/05 12:12

> 「jQuery.fn[ name ] =以下の関数」が 何度も実行される、ということなのでしょうか? 違います。その関数の実行は最初だけで、イベント発生時には引数に渡した関数が実行されます。
siebzehn

2023/02/05 12:17

maisumakun様 回答ありがとうございます。 なるほど、そういうことなのですね。ありがとうございます。 迅速にお答えいただき非常に助かりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問