代码之家  ›  专栏  ›  技术社区  ›  TigerTiger

如何根据收音机类型选择切换div?

  •  2
  • TigerTiger  · 技术社区  · 15 年前

    我用这样的方法切换div-

    <input type="radio" name="myRadio" value="myDiv_1" />MyDiv
    <input type="radio" name="myRadio" value="myDiv_2" />MyDiv2
    <input type="radio" name="myRadio" value="myDiv_3" />MyDiv3
    
    <div id="myDiv_1"> 1 Some input fields, text </div>
    <div id="myDiv_2"> 2 More input fields, text </div>
    <div id="myDiv_3"> 3 More input fields, text </div> 
    
    JAVASCRIPT
    
    $('#myDiv_1').hide();
    $('#myDiv_2').hide();
    $('#myDiv_3').hide();
    
    $('input[name="myRadio"]').change(function() {
            var selected_type = $(this).val();
            switch(selected_type) {
                case "myDiv_1":
                    $('#myDiv_1').slideDown();
                    //if others are visible just slideup
                    $('#myDiv_2').slideUp(); 
                    $('#myDiv_3').slideUp();
                break;
    
                case "myDiv_2": 
                    $('#myDiv_2').slideDown();
                    //if others are visible just slideup
                    $('#myDiv_1').slideUp(); 
                    $('#myDiv_3').slideUp();
                break;
                case "myDiv_3": 
                    $('#myDiv_3').slideDown();
                    //if others are visible just slideup
                    $('#myDiv_2').slideUp(); 
                    $('#myDiv_1').slideUp();
                break;
            }
        }
    );
    

    这个很好用。我的问题是如何改进它,使它更灵活,就像我必须修改更多的div一样,我必须修改所有的切换情况。

    还应将开关功能包含在函数中,并将此函数绑定到诸如单击和更改之类的事件(只是为了确保切换工作)??

    谢谢你的帮助。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Bravery Onions    15 年前

    这是有效的,我刚刚测试过。

    <script type="text/javascript">
    $(document).ready(function(){
    
        $('.MyDiv').hide();
    
        $('input[name="myRadio"]').change(function(){
            var selected = $(this).val();
            $('.MyDiv').slideUp();
            $('#'+selected).slideDown();
        });
    
    });
    </script>
    

    单选按钮应如下所示,其中 value id 应该显示的元素的名称。

    <form action="example.com" method="post">
        <input type="radio" name="myRadio" value="myDiv_1" />MyDiv<br />
        <input type="radio" name="myRadio" value="myDiv_2" />MyDiv2<br />
        <input type="radio" name="myRadio" value="myDiv_3" />MyDiv3<br />
        <input type="radio" name="myRadio" value="myDiv_4" />MyDiv4
    </form>
    

    最后是 div s应该是这样的,所有人都在上课 MyDiv

    <div id="myDiv_1" class="MyDiv">Div number 1!</div>
    <div id="myDiv_2" class="MyDiv">Div number 2!</div>
    <div id="myDiv_3" class="MyDiv">Div number 3!</div>
    <div id="myDiv_4" class="myDiv">Div number 4!</div>
    
        2
  •  1
  •   Sampson    15 年前

    以下内容基于您粘贴在此处的代码-使用前,请阅读以下内容:

    $("div").hide();
    $("input[name='myRadio']").change(function(){
      $("div:not(#"+$(this).val()+")").slideUp();
      $("div#"+$(this).val()).slideDown();
    });
    

    在使用之前。。。

        3
  •  0
  •   Acyra    15 年前

    您的解决方案在IE 8中不起作用——实际上具有相反的行为。使用“单击”功能而不是“更改”

      $('.myDiv').hide(); 
        $('input[name="myRadio"]').click(function(){
            var selected = $(this).val();
           $('.myDiv').slideUp();
            $('#'+selected).slideDown();
        });