如何优雅地将js代码传递给字符串?

时间:2012-05-20 08:44:12

标签: javascript jquery

有我的代码

<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>

我想:

当检查一个收音机时,需要隐藏grade_select中的所有div,然后显示div包含当前收音机值的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>

仅供参考:这个问题是this other question的衍生产品。

6 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

尝试:

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

Demo

答案 2 :(得分:1)

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

Live DEMO

答案 3 :(得分: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
}

答案 4 :(得分:0)

使用选择器#grade_select > div隐藏所有直接子项的div(如果您愿意,可以在其中包含其他div),然后过滤掉您要显示的div:

$(document).ready(function($){
  $("input[name=category]").click(function(){
    $("#grade_select > div").hide().filter("#" + this.id + "_grade").show();
  });
});

答案 5 :(得分:0)

demo

jquery代码

$("input[type='radio']").click(function() {
    $("#grade_select div").hide();
    $("#" + this.id + "_grade").show();
});​