0

有我的代码

<input type="radio" name="category" id="elementary" value="elementary" /> 1
<input type="radio" name="category" id="junior" value="junior" /> 2
<input type="radio" name="category" id="senior" value="senior" /> 3
<input type="radio" name="category" id="university" value="university" /> 4
<input type="radio" name="category" id="profession"/> 5

<div id='grade_select' class="clearfix">
  <div id='elementary_grade' class="clearfix"></div>
  <div id='junior_grade' class="clearfix"></div>
  <div id='senior_grade' class="clearfix"></div>
  <div id='university_grade' class="clearfix"></div>
  <div id='profession_grade' class="clearfix"></div>
</div>

我想:

选中一个radio时,需要隐藏grade_select中的所有div,然后显示id包含当前radio值的div

有我的js代码,不知道怎么回事

   <script type="text/javascript">
    $(document).ready(function($){
      $( "input[name='category']" ).bind( "click", category_select)
    });
    function category_select(){
        $("div:[id=this.attr[id]]).show()
    }
    </script>

仅供参考:这个问题是另一个问题的衍生问题

4

6 回答 6

4
<script type="text/javascript">
    $(document).ready(function($){
        $( "input[name='category']" ).bind( "click", function() {
            $("#grade_select div").hide().parent().find( '#' + this.id + "_grade" ).show();
        });
    });
</script>
于 2012-05-20T08:47:52.010 回答
2

尝试:

$("input[name='category']").click(function(){
    var id = $(this).attr('id');
    $("div#grade_select > div").hide();
    $("#" + id + "_grade").show();  
});​

演示

于 2012-05-20T08:49:19.723 回答
1
$("input[name='category']").click(function(){
    $("#grade_select div").hide().filter('#' + this.id + '_grade').show();
});

现场演示

于 2012-05-20T08:50:40.233 回答
0

您可以先创建一个保存 ID 的变量,然后将其用作选择器:

function category_select() {
     var $this = $(this),
     id = '#' + $this.attr('id') + '_grade'; // calculate ID of element to show

     $('#grade_select')
         .children() // select all children
         .hide() // hide all children
         .filter(id) // select the right one
         .show(); // and show it
}
于 2012-05-20T08:49:54.447 回答
0

使用选择器#grade_select > div隐藏所有直接子级的 div(以便您可以根据需要在其中包含其他 div),然后过滤掉您要显示的那个:

$(document).ready(function($){
  $("input[name=category]").click(function(){
    $("#grade_select > div").hide().filter("#" + this.id + "_grade").show();
  });
});
于 2012-05-20T08:50:09.427 回答
0

演示

jQuery代码

$("input[type='radio']").click(function() {
    $("#grade_select div").hide();
    $("#" + this.id + "_grade").show();
});​
于 2012-05-20T08:53:39.300 回答