基于单选按钮点击显示和隐藏div

基于单选按钮点击显示和隐藏div

问题描述:

我的html和jQuery代码在这里。这是一个非常简单的测试,但它仍然无法工作..基于单选按钮点击显示和隐藏div

这里是HTML:

<p>Select a question to see the answer.</p> 
    <div id="questionArea" class="questionArea" > 
    Question 1 <input type="radio" id="question1" class="question" name="radioGroup1" /> 
    Question 2 <input type="radio" id="question2" class="question" name="radioGroup1" /> 
    Question 3 <input type="radio" id="question3" class="question" name="radioGroup1" /> 
    </div> 

    <div id="answerArea" class="answerArea"> 
    <div id="answer1" class="answer">First Answer</div> 
    <div id="answer2" class="answer">Second Answer</div> 
    <div id="answer3" class="answer">Third Answer</div> 
    </div> 

这里是jQuery的:

$(document).ready(function() { 
    $(".answerArea").hide(); 
    $("input[$name='radioGroup1']").click(function() { 
      var answer = $(this).val(); 
      $(".answerArea").hide(); 
      $("#" + answer).show(); 
     }); 
    }); 
}); 

这里是另一种方式来显示/隐藏,虽然它不是一个好方法,但我只是想知道为什么它不能工作..

 $(document).ready(function() { 

      $("div.answerArea").hide(); 

       $('#question1').click(function() { 
        $('#answer2').hide('fast'); 
        $('#answer3').hide('fast'); 
        $('#answer1').show('fast'); 

       }); 

       $('#question2').click(function() { 

         $('#answer1').hide('fast'); 
         $('#answer3').hide('fast'); 
         $('#answer2').show('fast'); 

       }); 

        $('#question3').click(function() { 

         $('#answer1').hide('fast'); 
         $('#answer2').hide('fast'); 
         $('#answer3').show('fast'); 

       }); 


    }); 

$(".answerArea").hide();隐藏包含答案的父元素。如果父母隐藏,则不能显示孩子。

我会用孩子们的指数做到这一点:

$(document).ready(function() { 
    $(".answer").hide(); 

    $(".question").click(function() { 
     $(".answer").hide().eq($(this).index()).show(); 
    }); 
}); 

这将隐藏所有的答案元素,然后显示对应的问题之一。

+0

好的答案......我只是想补充一点,如果用户在已经有一个单选按钮被选中后刷新页面,他们再次看到答案的唯一方法就是点击一个不同的单选按钮。解决这个问题的两种方式:(1):在页面加载时重置表单('$('#myForm')[0] .reset()')(2):在页面首次加载时触发click事件。 '(“。question”)。click(function()...).trigger('click');' – 2013-02-24 22:09:54

+0

@Blender它确实隐藏了所有的答案元素,但点击时仍然无法显示。请问,“eq”和index()是什么意思?谢谢。 – Sunny 2013-02-24 22:12:28

+1

更改'$(“。answerArea”)。hide();'到'$(“。answer”)。hide();'? – Zac 2013-02-24 22:20:44