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

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

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

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

Q&A

解決済

2回答

1671閲覧

ハンバーガーメニューをクリックしたら閉じるようにしたい

wald

総合スコア5

jQuery

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

0グッド

0クリップ

投稿2020/03/19 02:56

編集2020/03/21 04:28

前提・実現したいこと

jqueryで調べたソースコードをコピペしてきたのですが
ハンバーガーメニューのリンクをクリックして、ページ内リンクしたあとスクロールで上まで戻るとメニューが出たままになってしまっています。
クリックしたら閉じるようにするにはどこにどう記述すればいいんでしょうか。

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

エラーメッセージ

該当のソースコード

html

1<div id="target"> 2  <div class="target_inner"> 3    <span class="target_inner_line target_inner_1" id="line1"></span> 4    <span class="target_inner_line target_inner_2" id="line2"></span> 5    <span class="target_inner_line target_inner_3" id="line3"></span> 6  </div> 7<nav class="nav" id="nav_f"> 8 <ul> 9 <li><a href="#header">HOME</a></li> 10 <li><a href="#drink">DRINK</a></li> 11 <li><a href="#food">FOOD</a></li> 12 <li><a href="#access">ACCESS</a></li> 13 <li><a href="#contact">CONTACT</a></li> 14 </ul></nav> 15</div>

css

1.target_inner{ 2 width: 40px; 3 height: 30px; 4 position: relative; 5 z-index: 2; 6 7} 8 9.target_inner_line { 10 display: block; 11 width: 40px; 12 height: 5px; 13 background: #fff; 14 -webkit-transition: 1.5s; 15 transition: 1.5s; 16 border-radius: 50px; 17 position: absolute; 18} 19 20.target_inner_1 { 21 top: 0; 22} 23 24.target_inner_2 { 25 top: 13px; 26} 27 28.target_inner_3 { 29 top: 26px; 30} 31 32 33.fadein{ 34 -webkit-transform: translateX(100%); 35 transform: translateX(100%); 36} 37 38.linea,.lineb,.linec{ 39 background: #ffffff; 40} 41 42.linea { 43 -webkit-transform: rotate(225deg); 44 transform: rotate(225deg); 45 top: 13px; 46} 47 48.lineb { 49 opacity: 0; 50} 51 52.linec { 53 -webkit-transform: rotate(-225deg); 54 transform: rotate(-225deg); 55 top: 13px; 56}

jquery

1function hamburger() { 2  document.getElementById('line1').classList.toggle('linea'); 3  document.getElementById('line2').classList.toggle('lineb'); 4  document.getElementById('line3').classList.toggle('linec'); 5  document.getElementById('target').classList.toggle('slidex'); 6  document.getElementById('nav_f').classList.toggle('fadein'); 7} 8 9document.getElementById('target').addEventListener('click', function () { 10  hamburger(); 11}); 12let list = document.getElementsByClassName('list'); 13 14for (let i = 0; i < list.length; i++) { 15  list[i].addEventListener('click', function () { 16    hamburger(); 17 }); 18} 19 </script> 20 <script type="text/javascript"> 21$(function(){ 22 $('a[href^=#]').click(function(){ 23 var speed = 500; 24 var href= $(this).attr("href"); 25 var target = $(href == "#" || href == "" ? 'html' : href); 26 var position = target.offset().top; 27 $("html, body").animate({scrollTop:position}, speed, "swing"); 28 return false; 29 }); 30}); 31</script>

試したこと

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

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

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

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

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

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

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

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

kei344

2020/03/19 04:40

HTMLも質問文にコードブロックで追記してください。
kei344

2020/03/19 14:32

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

2020/03/20 03:41

コードブロックにしました! 質問の仕方まで教えてくださりありがとうございます。
guest

回答2

0

ベストアンサー

動くサンプル:https://jsfiddle.net/r394mt6v/


hatena19さんの回答で「ハンバーガーメニューをクリック」の状況は問題なく動いています。
(そもそも提示のコードだけでは「メニューの開閉」はできていないようですが)

投稿2020/03/22 14:19

kei344

総合スコア69606

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

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

wald

2020/03/23 00:37

そうなんですね。jqueryは特に初心者なので持ってきたコードを読むこともできずで・・・ すみません。 ありがとうございました。
guest

0

リンクのクリックイベントに hamburger(); を追加すればいいと思います。

js

1$(function(){ 2 $('a[href^=#]').click(function(){ 3 var speed = 500; 4 var href= $(this).attr("href"); 5 var target = $(href == "#" || href == "" ? 'html' : href); 6 var position = target.offset().top; 7 $("html, body").animate({scrollTop:position}, speed, "swing"); 8 hamburger(); //追加 9 return false; 10 }); 11});

投稿2020/03/19 03:16

編集2020/03/19 03:19
hatena19

総合スコア34075

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

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

wald

2020/03/19 04:38

回答ありがとうございます。 hamburger();を追加してみましたが、状態が変わらないです。 ()の中に何か書き込まなければいけないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問