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

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

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

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

jQuery

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

Q&A

解決済

1回答

491閲覧

スクロールの動いている時間およびjQuery内の挙動について

takamelon

総合スコア3

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2023/02/03 14:41

知りたいこと

スクロールの動いている時間およびjQuery内の挙動について

質問

スクロールバーが1回押された時にアラートを出力させようと思い、下記記載のようなものを組んで実行しました。処理は意図通りに動きますが、ちょっと疑問がわいたので質問させてください。

疑問①

.scrollを使った場合は、スクロールが押されている間中、内部の処理が実行されるということがネット情報としてあったので、間中というのがどれくらいなのかと思って、アラートが表示される部分にブレークポイントを貼って何回アラートが表示されるのか確認しようとしましたが、一度表示されただけで処理が終わりました。間中というのは短い時間なので、いったん止めてしまうと2回目は起きない仕様なのでしょうか?

実装コード

$(function () {
$('#MainCotent_pnl').scroll(function () {
alert("スクロールバーが押されました。");
});
});

疑問②

また、これとは別に.scrollはjQueryの処理ということで上のような記述をした場合に、アラートが表示される前に何が実行されているのかを知ろうと思い、jQueryのソースを見てみたのですが(ver.1.10.2)、下記のような処理に飛んでいるようなのですが、どう動いているのかがわかりません。
returnの右側の不等式?がどういう意味なのかが分からないです。ここに来たあと、結局javascript側に何を返しているのでしょうか?なお下記のコードはjQuery.eachで囲まれた部分に書かれていましたが、何らかの繰り返し処理を実行しているのでしょうか?
また下記のnameの部分にカーソル合わせると、MenuWindowと表示されるのですが、自分でこのような名称は使っていないにも関わらず何を表しているのかがわかりません。
※この中にもブレークポイント貼ってみたのですが、止まることなくアラートの部分まで進みました。

jQueryのコード(ver1.10.2)

//Handle event binding
jQuery.fn[name]=function(data,fn){
return arguments.length > 0 ?
this.on(name,null,data,fn):
this.trigger(name);
};

最後に

上記の各質問について、ご教示いただければ幸いです。宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

疑問①への回答

一度表示されただけで処理が終わりました。間中というのは短い時間なので、いったん止めてしまうと2回目は起きない仕様なのでしょうか?

アラートはユーザーがOKを押すまで処理が中断されます。
alert()の代わりにconsle.log()でログを表示させれば、スクロールしている間は繰り返し実行されているのが見えると思います。

疑問②への回答

returnの右側の不等式?がどういう意味なのかが分からないです。

改行してしまっているので分かりにくいですが、

javascript

1return arguments.length > 0 ? this.on(name,null,data,fn) : this.trigger(name);

と、実際には1行の処理です。
三項演算子という記法です。

三項演算子について

三項演算子はif文を1行で書けてしまう便利な記法です。

javascript

1条件 ? trueの時の処理 : falseの時の処理;

例)

javascript

1// if文で書いた場合 2const age = 20; 3let type; 4 5if (age >= 18) { 6 type = 'adult'; 7} else { 8 type = 'child'; 9} 10 11console.log(type); // 'adult' 12 13// 三項演算子の場合 14const age = 16 15let type = age >= 18 ? 'adult' : 'child'; 16 17console.log(type); // 'child'
質問のコードの三項演算子の処理

私はjQueryに詳しくありませんので詳しくは分かりませんが、

  • arguments.length > 0 ?
    • 渡された引数の長さが1つ以上だったら
  • this.on(name,null,data,fn)
    • 対象に.on()メソッドを実行する
  • : this.trigger(name)
    • 引数が1つ未満だったら、対象に.trigger()メソッドを実行する

という意味合いです。

投稿2023/02/03 15:03

編集2023/02/03 23:18
Cocode

総合スコア2314

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

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

takamelon

2023/02/03 15:48

回答ありがとうございます。確かにconsole.log()を使うことで、繰り返ししていることは確認できました。
Cocode

2023/02/03 23:18

疑問②への回答を追加しました。ご確認ください
takamelon

2023/02/04 00:45

疑問②に対する回答ありがとうございます。書かれている式の動き(内容)について詳しくお答えいただき非常に助かりました。今回のコード内容が「jQuery.eachで囲まれた部分」に書いてあったので、そのような場合にどんな処理(実行内容)が行われるのか?(繰り返し処理をしている?)という点については、jQueryに関してはお詳しくないということですので、そこは別に回答が付くかもしれないのでもう少し待ってみます。本当にありがとうございました。
Cocode

2023/02/04 13:13

はい!他に詳しい方の回答を私も期待しております。(私も気になります!) 差し出がましいようですが質問の仕方に少しアドバイスさせてくださいm(_ _)m 1つの投稿で複数の異なるテーマでの質問は控えた方がいいです。 回答がつきにくい上に、回答者がそれぞれ別のテーマで回答をくださった場合、どれをベストアンサーに選ぶべきか難しくないですか? teratailなどのこういったQ&Aサービスは、同じ疑問を持って検索をかけた人のために、情報を蓄積していくことも大事なのです。 また、タイトルと疑問②の内容が合っていませんので、同じく疑問②について知りたいと思った人が検索でこのページに到達する可能性が限りなく低くなってしまいます。 なので、今後は今回のような質問は別々の質問として投稿した方がいいかもしれませんm(_ _)m お目汚し失礼いたしました。
siebzehn

2023/02/05 12:12

回答ありがとうございます。質問の仕方、こちらがこういうものに慣れておらず不快な思いをさせてしまい申し訳ございませんでした。以後、気を配って投稿するようにいたします。
siebzehn

2023/02/05 12:14

アカウント名異なりますが、質問者です。上のコメントは。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問