teratail header banner
teratail header banner
質問するログイン新規登録
jQuery

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

Q&A

解決済

2回答

762閲覧

jQueryで同じような処理をまとめたい

tkhs0827

総合スコア11

jQuery

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

0グッド

0クリップ

投稿2018/05/14 02:36

編集2018/05/30 03:54

0

0

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
#push00というidのボタンを押したら、#box00というidのdivが表示されるというコードを書いたのですが、
こちらをまとめて記述したいです。

該当のソースコード

html

1 <p>おはようございます</p> 2 <button type="button" id="push01" class="btn"/> 3 次へ 4 </button> 5 </div> 6 <div id="box01"> 7 <p>こんにちは</p> 8 <button type="button" id="push02" class="btn"/> 9 次へ 10 </button> 11 </div> 12 <div id="box02"> 13 <p>こんばんは</p> 14 </div>
$(function(){ $("#box01").css("display", "none"); $("#push01").one("click", function () { $("#box01").toggle(); }); $("#box02").css("display", "none"); $("#push02").one("click", function () { $("#box02").toggle(); }); });

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

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

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

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

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

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

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

m.ts10806

2018/05/14 02:47

htmlもご提示ください
tkhs0827

2018/05/14 03:11

ありがとうございます。htmlも記述しました。
guest

回答2

0

ベストアンサー

必ずリンクしているというルールなのであればdata属性などを利用してリンクさせるのもありです。
あとは同じ処理をしているエレメントには同じclassを与えてthisで対応。

html

1 <p>おはようございます</p> 2 <button type="button" id="push01" class="btn" data-box-target="box01" > 3 次へ 4 </button> 5 <div id="box01" class="box"> 6 <p>こんにちは</p> 7 <button type="button" id="push02" class="btn" data-box-target="box02" > 8 次へ 9 </button> 10 </div> 11 <div id="box02" class="box"> 12 <p>こんばんは</p> 13 </div>

js

1$(function(){ 2 $(".box").hide(); 3 $(".btn").one("click", function () { 4 $("#"+$(this).data("box-target")).toggle(); 5 }); 6 });

追記:
そういえば幾つかhtmlがおかしい部分がありますので修正しました。
開始のdivがないのに</div>で閉じている。→ 開始が分からないので閉じdivを削除
<button /></button>としてしまっている。→ <button></button> に修正

投稿2018/05/14 04:05

編集2018/05/14 04:13
m.ts10806

総合スコア80888

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

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

tkhs0827

2018/05/14 04:58

何から何までありがとうござます! わかりやすく教えていただきありがとうございます! 無事に出来ました!
m.ts10806

2018/05/14 05:01

htmlはきちんと構文守ってくださいね。 そこがおかしいとjavascript側も正常に解釈できないので。 Bracketsなど構文チェックも同時にしてくれるエディタをご活用ください。
guest

0

やりたいことを見直してみましょう。やりたいのは、
ボタンが押されたら、そのボタンの ID の番号と紐付く div が表示され、他の div は表示されない
ですよね。
そういう動きをするボタンと div が複数あるなら、それらに対して「クラス」を定義してやって、そのクラスを selector で扱った方が効率が断然よくなります。

まず、ボタンと div それぞれにクラスを定義します。

HTML

1<input type="button" class="showdiv" id="push01">01</input> 2<input type="button" class="showdiv" id="push02">02</input> 3 4<div class="showdiv" id="box01">...</div> 5<div class="showdiv" id="box02">...</div>

そうすると、ボタンのイベントハンドラはこう書けます。

JavaScript

1$("input.showdiv").on('click', function( 2 $('div.showdiv').css('display', 'none'); 3 $("#box"+$(this).id.substr(-2)).toggle(); 4));

投稿2018/05/14 03:00

tacsheaven

総合スコア13707

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

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

m.ts10806

2018/05/14 04:16

回答のコード作ってて思ったのですが、質問者さんはone()を利用されているので1回開いたら閉じない仕様にしてるんじゃないかなあと思ったり。 としたらjsじゃなくてstyleでnoneにしてtoggle()じゃなくてshow()にした方が良さそうです。要件にもよりますね。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問