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

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

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

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

jQuery

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

Q&A

解決済

5回答

3252閲覧

jQueryで先祖要素の中にある任意のクラスを持つ要素を指定したい。

LINDA48

総合スコア12

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2015/06/07 07:35

編集2015/06/09 09:26

###前提・実現したいこと
jQueryで下記のようなHTMLでボタンを押すと回答が見れるようにしたいのですが、
どのように記述したらよいでしょうか?

lang

1<div class="parents"> 2 <div class="question"> 3 質問 4 <p class="btn">回答を見る</p> 5 </div> 6 <div class="answer"> 7 回答 8 </div> 9</div> 10 11<div class="parents"> 12 <div class="question"> 13 質問 14 <p class="btn">回答を見る</p> 15 </div> 16 <div class="answer"> 17 回答 18 </div> 19</div>

###発生している問題・エラーメッセージ
回答を見るを押すと全ての回答が開いてしまいます。
それぞれの要素に独自のIDやclassを追加せずに実現したくて
.parents()などを使ってどうにか、p.btnから見た先祖要素div.parentsの中にある
div.answerを指定しようとしていますが、うまくいきません。

###ソースコード

$(function(){ $(".answer").hide(); $(".btn").click(function(){ $(this).toggleClass("open"); $(".answer").slideToggle(); }); });

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

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

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

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

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

guest

回答5

0

closestメソッドが使えます。

lang

1$(function() { 2 $(".btn").click(function() { 3 $(this).closest(".parents").find(".answer").slideToggle(); 4 }); 5});

投稿2015/06/07 09:59

penguinshunya

総合スコア140

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

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

guest

0

ベストアンサー

こんな感じでどうでしょうか?
もっといい書き方あったら教えてください :D

lang

1$(this).parent().next(".answer").slideToggle();

参考: Traversing - jQuery 日本語リファレンス

投稿2015/06/07 07:46

ryunix

総合スコア1656

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

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

LINDA48

2015/06/09 09:27

迅速にご回答いただけた、ryunix様をベストアンサーに選ばせていただきました。 ありがとうございました!
guest

0

追記です。

<p>タグが閉じられていないので、</p>として動かしてみてください。

投稿2015/06/09 03:18

myatsu07

総合スコア12

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

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

LINDA48

2015/06/09 09:28

ご指摘ありがとうございます。修正しました!
guest

0

これで動くかと思います。

$(function(){
$('.answer').hide();
$('.question').each(function() {
$(this).find('.btn').click(function() {
$(this).toggleClass('open');
$(this).parent().next().slideToggle();
});
});
});

投稿2015/06/09 03:13

myatsu07

総合スコア12

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

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

LINDA48

2015/06/09 09:56

ありがとうございます。 今回each()を使わなくても動きました!
guest

0

質問の趣旨に合ってないけど、一応参考にこんなのもある。

http://www.tagindex.com/html5/interactive/details.html

投稿2015/06/07 09:39

fukumi822

総合スコア228

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

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

LINDA48

2015/06/09 09:51

details便利ですね!簡単に実装したいときに使えそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問