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

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

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

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

jQuery

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

Q&A

2回答

2871閲覧

SVG内の要素をクリックした際に表示、非表示を制御する

sanezane

総合スコア91

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/06/24 05:49

編集2018/06/24 06:33

ドローソフトで作成した3層になっているレイヤーの表示・非表示を制御したい。(SVG)
・同じ領域なので同時にvisibleになることは許されない
・読み込んだ際に3つ全てhide()にしている
・on 'click'でAがクリックされたときBが出ていたらBを隠してAを出すなどの条件式をせっせか書いたが、反応がない。
・on('click',function()){
alert('クリック')}としたらアラートは出る

・原因がわかりません。ご教授願います。
・ちなみに指定しているidはレイヤーです。その辺りに原因があるのでしょうか。レイヤーは指定できないからオブジェクトを指定しなければいけない?←まだ試していない

追加情報・jqueryバージョン jquery-3.3.1

現状

javascript

1 2 3 $(function () { 4 //画面初期化 5 6 $('#A').hide(); 7 $('#B').hide(); 8 $('#C').hide(); 9 10  }); 11 12//ボタンA押下処理 13 $(window).on('load', function () { 14 $('.ボタンA').on('click', function () { 15 if ($('#A').is(':hidden') && $('#B').is(':hidden') && $('#C').is(':hidden')) { 16 $('#A').show(); 17 } else if ($('#A').is(':visible')) { 18 $('#A').hide(); 19 } else if ($('#B').is(':visible')) { 20 $('#B').hide(); 21 $('#A').show(); 22 } else if ($('#C').is(':visible')) { 23 $('#C').hide(); 24 $('#A').show(); 25 } else { 26 alert('error'); 27 } 28 29 }); 30 }); 31 32 //ボタンB押下時処理 33 $(window).on('load', function () { 34 $('.ボタンB').on('click', function () { 35 if (($('#B').is(':visible'))) { 36 $('#B').hide(); 37 } else if (($('#A').is(':visible'))) { 38 $('#A').hide(); 39 $('#B').show(); 40 } else if (($('#B').is(':hidden')) && (($('#A').is(':hidden')) && (($('#C').is(':hidden'))))) { 41 $('#B').show(); 42 } else if (($('#C').is(':visible'))) { 43 $('#C').hide(); 44 $('#B').show(); 45 } 46 47 }); 48 }); 49 50 //ボタンC押下時処理 51 $(window).on('load', function () { 52 $('.ボタンC').on('click', function () { 53 if (($('#C').is(':visible'))) { 54 $('#C').hide(); 55 } else if (($('#A').is(':visible'))) { 56 $('#A').hide(); 57 $('#C').show(); 58 } else if (($('#B').is(':hidden')) && (($('#A').is(':hidden')) && (($('#C').is(':hidden'))))) { 59 $('#C').show(); 60 } else if (($('#B').is(':visible'))) { 61 $('#B').hide(); 62 $('#C').show(); 63 } 64 65 }); 66 });

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/24 06:19

jQuery のバージョンは?最新バージョンでは show, hide が使えないのでは?
sanezane

2018/06/24 06:35

情報追加しました。だとすると、初期化のhide()で3つ全て消えていることを確認しているのでshow()に問題がありそうです。確認します
退会済みユーザー

退会済みユーザー

2018/06/24 06:38

使えないと書きましたがそうではなく、v3.x で仕様が変わったようです。問題がその影響かどうかはわかりませんが、ご自分で調べてみてください。
sanezane

2018/06/24 06:43 編集

show()の仕様はnoneの場合にそれを取り除くという仕様に変更されてはいましたが、コード的に仕様変更による影響はなさそうです。あとはブラウザによる互換性かと思いますが、まだ調べていないので調べてみます
guest

回答2

0

opacity の値を変えて表示を切り替えてみてください。
jQuery の hide()display の値を none に変えます。
display の値が none だったり visibility の値が hidden だったりすると要素をクリックできなくなります。

https://codepen.io/anon/pen/oMmayM

投稿2018/08/12 01:01

編集2018/08/12 01:03
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ちょっと状況がわかりませんがこんな感じで

javscript

1$(function(){ 2 $('#A,#B,#C').hide(); 3 $('#btn_a').on('click',function(){ 4 $('#B,#C').hide(); 5 $('#A').toggle(); 6 }); 7 $('#btn_b').on('click',function(){ 8 $('#A,#C').hide(); 9 $('#B').toggle(); 10 }); 11 $('#btn_c').on('click',function(){ 12 $('#A,#B').hide(); 13 $('#C').toggle(); 14 }); 15}); 16

HTML

1<input type="button" value="A" id="btn_a"> 2<input type="button" value="B" id="btn_b"> 3<input type="button" value="C" id="btn_c"> 4<svg version="1.1" width=100 height=100 style="position:absolute"> 5<polygon points="10,80 50,20 100,50 " fill="yellow" stroke="black" fill="lightgreen" id="A" /> 6<rect width="50" height="50" stroke="black" fill="red" x="30" y="40" id="B" /> 7<circle cx="25" cy="30" r="20" stroke="black" fill="blue" id="C" /> 8</svg> 9

投稿2018/06/25 01:56

yambejp

総合スコア114962

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問