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

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

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

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

2923閲覧

jQueryをクリックをイベントとした要素の表示非表示の連動について

junagame

総合スコア12

jQuery

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/09/28 03:32

編集2017/09/28 05:20

###前提・実現したいこと

jQueryを使ったクリック時のタブの表示の切り替えと別の要素の表示・非表示を連動させたい 実現したいことが分かりにくいとのご指摘をいただきましたので もうすこし具体的な内容を追記いたします。 【追記】 http://www.ofuta.me/jquery/408 上記の記事を参考に 1ページ内に複数のタブの切り替えがある場合のタブメニューを作成しました。 タブの切り替え自体は上記の記事を参考に設定できたのですが、 クリックのイベントに連動して他の要素にクラス付与とクラス削除をしたいと思ったときに うまく動作してくれない状況です。 【前提】 ページの読み込み時は <a class="mondai_pdf dl_active" href="#">PDF</a>と <div class="mondai active"><p>tab_btn1</p></div>と <div class="tabConte mondai" style="display:block;">が表示されている状態 ※active、dl_activeにはdisplay:block;が指定してあります。  タブメニューはページ内に複数設置してあります。 【実現したいこと】 tab_btnの子要素のクリックをイベントとして tab_btnの子要素にactiveというクラスの付与・削除をしたい pdf_btnの子要素とtabConteの子要素の表示・非表示を連動させたい (クラスの付与、jqueryによるコントロールどちらでも大丈夫です)

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

当方jQueryやjavascriptにあまり詳しくありません。 実装する際はそれっぽい記事を探して必要な部分を修正して対応する程度の知識量です。 今回の質問はクリックによるタブの表示切り替えはうまくいったのですが、 連動して他の要素の表示・非表示を切り替えたいと思った際にうまくいきません。 chromeの検証画面のコンソールではエラーが出ていないのでプログラム自体が うまく書けていないんだと思います。

###該当のソースコード

【HTML】 <section class="sp_tb_menu"> <div class="ttlBox"> <h2>テスト</h2> <span class="pdf_btn"> <a class="mondai_pdf" href="#">PDF</a> <a class="kaitou_pdf" href="#">PDF</a> </span> </div> <div class="tab_btn"> <div class="mondai active"><p>tab_btn1</p></div> <div class="kaitou"><p>tab_btn2</p></div> <a href="#">outer_link</a> </div> <div class="tabBox"> <div class="tabConte mondai" style="display:block;"> <ul class="mod-button-link"> <li><a href="#">Ⅰ</a></li> <li><a href="#">Ⅱ</a></li> </ul> </div> <div class="tabConte kaitou"> <ul class="mod-button-link"> <li><a href="#">Ⅰ</a></li> <li><a href="#">Ⅱ</a></li> </ul> </div> </div> </section> 【jQery】 $(function() { $('.tab_btn div:nth-child(1)').addClass('active'); $('.pdf_btn a:nth-child(1)').addClass('dl_active'); $('.tab_btn div').on('click',function() { var num = $(this).parent().children('div').index(this); $(this).parent('.tab_btn').each(function(){ $('div',this).removeClass('active').eq(num).addClass('active'); }); $(this).parent().next().children('.tabConte').hide().eq(num).show(); }).first().click(); }); ※cssのactive、dl_activeというクラスにdisplay: block;をあてています。 上記のHTMLとjQueryでタブの表示の切り替えはうまくいっています。

###試したこと
独学なもので色々な記事を参考にjQueryを書き換えてみたのですがうまくいっていない状態です。

###補足情報(言語/FW/ツール等のバージョンなど)
HTML、CSS、jQuery

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

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

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

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

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

rnosh

2017/09/28 04:28

実現したいことの記載が少々わかりにくいです。「表示・非表示の連動」では、どういう時に何を表示にして何を非表示にしたいのかなどがわからないので、正確な回答を得るには、もう少し詳述したほうがいいと思います。
kei344

2017/09/28 04:50

コードブロックにはコード/エラーのみを入れるようにしてください。文章はコードブロック外にあるほうが読みやすいです。
guest

回答3

0

yambejp様、NIA様に教えていただいた情報をもとに何度か調整してみたところ
うまくいきました。

お二人様とも誠にありがとうございました。

投稿2017/09/28 07:54

junagame

総合スコア12

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

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

0

質問内容と求めている結果と状況が謎謎ですが、表示を切り替えるだけなら下記でも可能です。
もし、表示切替する要素が動的に追加された要素なら$(document).on('click')を使わないと切り替えされないかと。

javascript

1$(function() { 2 /* 初期表示 */ 3 $('.pdf_btn a').hide().eq(0).toggle(); 4 $('.tabconte').hide().eq(0).toggle(); 5 /* 表示切替 */ 6 $('.tab_btn div').on('click',function(){ 7 var idx=$(this).index(); 8 $('.pdf_btn a').hide().eq(idx).toggle(); 9 $('.tabconte').hide().eq(idx).toggle(); 10 }); 11});

HTML

1<section class="sp_tb_menu"> 2<div class="ttlBox"> 3<h2>テスト</h2> 4<span class="pdf_btn"> 5<a class="mondai_pdf" href="#">PDF-1</a> 6<a class="kaitou_pdf" href="#">PDF-2</a> 7</span> 8</div> 9<div class="tab_btn"> 10<div class="mondai active"><p>tab_btn1</p></div> 11<div class="kaitou"><p>tab_btn2</p></div> 12<a href="#">outer_link</a> 13</div> 14<div class="tabBox"> 15<div class="tabConte mondai"> 16<ul class="mod-button-link"> 17<li><a href="#">1-Ⅰ</a></li> 18<li><a href="#">1-Ⅱ</a></li> 19</ul> 20</div> 21<div class="tabConte kaitou"> 22<ul class="mod-button-link"> 23<li><a href="#">2-Ⅰ</a></li> 24<li><a href="#">2-Ⅱ</a></li> 25</ul> 26</div> 27</div> 28</section>

投稿2017/09/28 05:55

NIA

総合スコア181

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

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

junagame

2017/09/28 07:52

私の説明が下手で余計なお手間を取らせて申し訳ございません。 ご教示頂いたコードをもとに調整をしてみます。 ありがとうございました。
guest

0

ベストアンサー

ちょっとごちゃごちゃしていて状況がわからないのですが
こんな感じでしょうか?

CSS

1.dl_active{color:aqua;} 2.active{color:lime;}

javascript

1$(function() { 2 $('.pdf_btn a:first').addClass('dl_active'); 3 $('.tabconte').hide().eq(0).show(); 4 $('.tab_btn div').on('click',function(){ 5 var idx=$('.tab_btn div').index($(this)); 6 $(this).addClass('active').siblings().removeClass('active'); 7 $('.pdf_btn a').removeClass('dl_active').eq(idx).addClass('dl_active'); 8 $('.tabconte').hide().eq(idx).show(); 9 }).eq(0).addClass('active'); 10}); 11

投稿2017/09/28 04:08

編集2017/09/28 04:09
yambejp

総合スコア114843

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

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

junagame

2017/09/28 05:23

早速のご回答誠にありがとうございます。 私の説明が下手で余計なお手間を取らせてしまい申し訳ございませんでした。 ご教示いただいたコードをもとに調整してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問