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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

21172閲覧

画像をクリックでオンオフ切り替えたい

a2s

総合スコア39

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/01/30 04:04

###前提・実現したいこと
・#btn をクリックすると、画像が _off.png から _on.png に切り替わり、.glovalNavi をを表示させる
→ 再び#btn をクリックすると、画像が _on.png から _off.png に切り替わり、.glovalNavi を隠す

上記挙動を組みたいのですが、画像を何度も切り替える方法がわかりませんでした。
(オフ状態からオンにはいけるものの、オンからオフに戻らない)
何か簡単な方法をご存知でしたらお教えいただけると助かります。

###HTML

<div class="hoge"> <ul> <li id="btn"><img src="btn_off.png"></li> </ul> </div> <div class="glovalNavi"> <ul> <li><a href="">メニュー1</a></li> <li><a href="">メニュー2</a></li> </ul> </div>

###JavaScript

$(function(){ $('#btn').on('click', function(){ $('.glovalNavi').stop().slideToggle(); $('#btn img').attr('src','/btn_on.png'); return false; }); })

###CSS

.glovalNavi{ position: absolute; z-index: 1; display: none; }

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

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

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

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

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

guest

回答3

0

いちおう読んだまま書きます

javascript

1<script> 2$(function(){ 3 $('.glovalNavi').hide(); 4 $('#btn img').on('click',function(){ 5 var reg=new RegExp('^(.+_)(off|on)(\.png)$'); 6 if(r=$(this).attr('src').match(reg)){ 7 $(this).attr('src',r[1]+(r[2]=='off'?'on':'off')+r[3]); 8 $('.glovalNavi').toggle(r[2]=='off'); 9 } 10 }) 11}); 12</script> 13<div class="hoge"> 14 <ul> 15 <li id="btn"><img src="btn_off.png"></li> 16 </ul> 17</div> 18<div class="glovalNavi"> 19 <ul> 20 <li><a href="">メニュー1</a></li> 21 <li><a href="">メニュー2</a></li> 22 </ul> 23</div> 24

投稿2017/01/30 04:29

編集2017/01/30 04:35
yambejp

総合スコア114843

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

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

a2s

2017/01/30 05:23

ありがとうございます!
guest

0

方法はいろいろありますが。
とりあえず自分ならこうします。

_on,_offとクラスを作って

javascript

1$('#btn').on('click',function(){ 2 if($(elm).hasClass('_on')){ 3 $(elm).removeClass('_on').addClass('_off'); 4 //onのときの処理 5 $('#btn img').attr('src','/btn_off.png'); 6 $('.glovalNavi').css({display:'block'}); 7 }else{ 8 $(elm).removeClass("_off").addClass('_on'); 9 //offのときの処理 10 $('#btn img').attr('src','/btn_on.png'); 11 $('.glovalNavi').css({display:'none'}); 12 } 13}) 14

↓こんなかんじ。
https://jsfiddle.net/meu6bcct/1/

たぶんもっときれいに書けるはず。

追記
{display:'none'}と{display:'display'}をそれぞれClass化してremove/addClassしてもいいと思う。

投稿2017/01/30 04:28

編集2017/01/30 04:31
Neko_doshi

総合スコア214

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

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

a2s

2017/01/30 05:23

ありがとうございます!
guest

0

ベストアンサー

Javascript

1$(function(){ 2 $('#btn').on('click', function(){ 3 $('.glovalNavi').stop().slideToggle(); 4 $('.glovalNavi').toggleClass("on"); 5 if($('.glovalNavi').hasClass("on")){ 6 $('#btn img').attr('src','btn_on.png'); 7 }else{ 8 $('#btn img').attr('src','btn_off.png'); 9 } 10 return false; 11 }); 12})

画像のパスは適宜合わせてください。
「on」というクラスの有無でどちらの画像を表示するか切り替えています。
色々考慮しないといけないパターンはあると思いますがその辺は調整してみてください。

投稿2017/01/30 04:22

koronatail

総合スコア433

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

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

a2s

2017/01/30 05:24

ありがとうございます!無事こちらの記述で動作しました。 一番早かったので、koronatailさんをBAにいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問