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

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

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

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

Q&A

解決済

1回答

1678閲覧

ページ内リンクでハンバーガーメニューを閉じたい

coconut55

総合スコア13

JavaScript

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

0グッド

0クリップ

投稿2018/12/22 05:10

前提・実現したいこと

ハンバーガーメニュー内のページ内リンククリック時に、メニューを閉じたい。

発生している問題・エラーメッセージ

ハンバーガーメニューで、別画面遷移の場合はメニュー表示が自動で閉じますが、 ページ内リンクの場合、背面でページ内遷移はしてますが、ハンバーガーメニューが開いたままです。 いろいろ調べてみて試しましたが、js初心者のため、お手上げ状態になり、質問させていただきました。

該当のソースコード

<div class="navToggle">  <span></span><span></span><span></span><span>menu</span> </div> <nav class="globalMenuSp">  <ul>   <li><a href="#content_1">MENU1</a></li>   <li><a href="#content_2">MENU2</a></li>   <li><a href="#content_3">MENU3</a></li>  </ul> </nav> <script>  $(function() {  $('.navToggle').click(function() {  $(this).toggleClass('active');  if ($(this).hasClass('active')) {     $('.globalMenuSp').addClass('active');  } else {   $('.globalMenuSp').removeClass('active');  }  });  });  </script>

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

メニュー項目をクリックした際にも、メニューを開閉するボタンをクリックした際と同じようにメニューの状態を切り替えてやる必要があるかと思います。

JavaScript

1 // メニュー項目配下のリンククリック時 2 $('.globalMenuSp a').on('click', function() { 3 $('.navToggle').toggleClass('active'); 4 if($('.navToggle').hasClass('active')) { 5 $('.globalMenuSp').addClass('active'); 6 } else { 7 $('.globalMenuSp').removeClass('active'); 8 } 9 })

あと、$('.navToggle')のようにjQueryにセレクタ文字列を渡して要素を参照する処理は、そのたびに要素を検索するコストが発生するため、何度も参照する要素は変数に格納して使いまわした方がいいと思います。

JavaScript

1 var navToggle = $('.navToggle'); // 変数に格納 2 navToggle.toggleClass('active'); 3 if(navToggle.hasClass('active')) { 4     // 以下省略

投稿2018/12/22 05:36

編集2018/12/22 05:39
mks

総合スコア80

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

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

coconut55

2018/12/23 11:41

教えていただいたとおり加筆したら、思ったとおりの挙動になりました! 本当にありがとうございます(T-T) 大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問