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

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

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

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

jQuery

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

Q&A

解決済

2回答

1620閲覧

【jQuery】下記ソースが読める方解説お願いします。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/08/20 11:24

編集2017/08/20 11:40

###【jQuery】下記ソースが読める方解説お願いします。

こちらのスマホサイト(http://www.nico-dental.com/sp/)
の右上のボタン(ドロワーメニュー)の処理は下記で行っています。
ソースコードの概ねは理解できるのですが、for文の部分が何の働きをしているのかが、
いまいちわかりません。そもそもこちらは必要なのでしょうか?
ご存知の方いらっしゃいましたら解説お願いします。

###不明なコード

for (var i = 1; i <= menuItem.length; i++) { menuItem.eq(i - 1).stop().animate({ 'center': openPosition }, speedItem); }

###メニュー表示/非表示のコード

function menuSlide(b, t, h) { var btn_menu = b, header = $(h), menu = $(btn_menu), speedOpen = 400, speedClose = 600, speedItem = 300, speedDelayOpen = 300, speedDelayClose = 100, open = 'menu_open', close = 'current', openPosition = 0, closePosition = 0, //0 ~ -100% targetId = t, target = $(targetId), menuItem = target.find('li'); menu.on('click', function() { if (!menu.hasClass(close)) { target.stop().fadeIn(speedOpen); menu.removeClass(open).addClass(close); header.removeClass(close).addClass(close); for (var i = 1; i <= menuItem.length; i++) { menuItem.eq(i - 1).stop().animate({ 'center': openPosition }, speedItem); } } else { for (var i = 1; i <= menuItem.length; i++) { //console.log(-(i - 1)); menuItem.eq(-i).stop().animate({ 'center': closePosition }, speedItem); } target.stop().fadeOut(speedClose); menu.removeClass(close).addClass(open); header.removeClass(close); } }); } menuSlide('.js_btn_gnavi', '#gNaviWrap', '#headerWrap');

以上です。
よろしくお願い致します。

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

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

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

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

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

kei344

2017/08/20 11:37

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
退会済みユーザー

退会済みユーザー

2017/08/20 11:41

失礼しました。```にて改行を入れました。
s8_chu

2017/08/20 12:51

`'center': closePosition`とありますが、centerではなくrightではないのでしょうか?
退会済みユーザー

退会済みユーザー

2017/08/21 01:33

ご指摘の通り、こちら恐らくrightですね。。。コメントありがとうございます。
guest

回答2

0

ベストアンサー

ご質問のコードにコメントをつけてみました。

/* menuItemの個数分ループする */ for (var i = 1; i <= menuItem.length; i++) { /* 現在進行中のアニメーションを中断して別のアニメーションを実行する */ menuItem.eq(i - 1).stop().animate({ /* center 属性を openPosition の値に変更する(アニメーション) */ 'center': openPosition` /* アニメーションの動作時間 */ }, speedItem); }

だいたい下のコードと動きは同じはずです。tは親関数menuSlideの引数です。

var menuItem = $(t).find("li"); menuItem.stop(); menuItem.animate({ "center": 0 }, 300);

for文の部分が何の働きをしているのかが、いまいちわかりません。そもそもこちらは必要なのでしょうか?

不要かと思われます。

参考

投稿2017/08/20 15:56

編集2017/08/20 15:59
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/10/10 15:49

ありがとうございました。
guest

0

製作者に聞かないと実際のところはわかりませんが、メニューアイテムを上から順番に表示して、下から順番に消したかったコードの名残だと思います。

JavaScript

1for (var i = 1; i <= menuItem.length; i++) { 2 menuItem.eq(i - 1); // 0番目(最初)から( menuItem.length - 1 )番目(最後)まで順に処理している 3 menuItem.eq(-i); // 最後からさ以後まで順に処理している 4}

実際は処理の順番としては上から/下からに対応した順になりますが、時間差はほぼないでしょう。delayを使うコードにするなら意味があるかもしれません。


【.eq() | jQuery API Documentation】
https://api.jquery.com/eq/

【.eq() | jQuery 1.9 日本語リファレンス | js STUDIO】
http://js.studio-kingdom.com/jquery/traversing/eq

【jQueryでリストを一つずつ遅延して表示する | webOpixel】
http://www.webopixel.net/javascript/714.html

投稿2017/08/20 16:02

kei344

総合スコア69398

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問