私はユーザーが質問に答える方法に基づいて非表示にする必要がある複雑な一連のdiv
を証明しています。jQuery Hide and Goシーク
基本的に、ユーザーに質問が表示されます。彼らが質問に答えると、彼らはタイトルと説明からなる回答方法に基づいてコンテンツを提示されます。現在の質問は隠され、次の質問が提示されます。彼らが次の質問に答えると、前の説明は隠され、次のタイトルと説明が表示されるはずです。これはすべての質問に答えるまで続きます。
私のHTMLは次のようなものになります。私のjs/jqueryのは、このようになります
<div class="container">
<form>
<div id="q-1" class="question-group row">
<div class="question-wrap">
<p>question 1?</p>
<label class="radio-inline">
<input type="radio" name="q1" value="yes"> Yes
</label>
<label class="radio-inline">
<input type="radio" name="q1" value="no"> No
</label>
</div>
<div id="q1-yes" class="reason-wrap">
<div class="reason">
<h2><span class="number">1</span>reason 1</h2>
</div>
<div class="reason-desc">
<p>description</p>
</div>
</div>
<div id="q1-no" class="reason-wrap">
<div class="reason">
<h2><span class="number">1</span>reason 1</h2>
</div>
<div class="reason-desc">
<p>description</p>
</div>
</div>
</div>
<div id="q-2" class="question-group row">
<div class="question-wrap">
<p>question 2?</p>
<label class="radio-inline">
<input type="radio" name="q2" value="yes"> Yes
</label>
<label class="radio-inline">
<input type="radio" name="q2" value="no"> No
</label>
</div>
<div id="q2-yes" class="reason-wrap">
<div class="reason">
<h2><span class="number">2</span>reason 2</h2>
</div>
<div class="reason-desc">
<p>description</p>
</div>
</div>
<div id="q2-yes" class="reason-wrap">
<div class="reason">
<h2><span class="number">2</span>reason 2</h2>
</div>
<div class="reason-desc">
<p>description</p>
</div>
</div>
</div>
</form>
</div>
を:(。私は私が正常に機能し得るように見えることはできませんどのようなコメントをしました)
$('input[type="radio"]').click(function() {
var desc = ('#'+$(this).attr("name")+'-'+$(this).val()); //matching div to display for this question
$(desc).toggle(); //show div for this question
$(this).closest('.question-wrap').hide(); //hide this question
$(this).parent().next('.question-wrap').show(); //show next question NOT WORKING
//??? hide only the .reason-desc that is currently showing when next question is answered
});
デモ:http://codepen.io/anon/pen/XMJZLK
'.next()'関数は、直接の兄弟だけを調べます。 – Pointy
.nextAll()はうまくいくでしょうか? –
問題はあなたの ".question-wrap"要素が "question-group"の中にネストされているので、彼らは全く兄弟ではありません。あなたは上に移動しなければなりません( '.parent("。question-group ")')のように '' .next( "。question-group")と '.find("。question-wrap ")'そこから。 – Pointy