【问题标题】:How to toggle a div based upon the radio type selection?如何根据无线电类型选择切换 div?
【发布时间】:2010-11-07 09:13:39
【问题描述】:

我使用类似这样的方式切换 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 一样,我必须修改所有 switch 案例。

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

感谢您的帮助。

【问题讨论】:

    标签: php jquery radio-button toggle


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这行得通,我刚刚测试过。

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

      最后,divs 应该是这样的,都有 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>
      

      【讨论】:

        【解决方案3】:

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

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

        使用前...

        我建议您为每个可折叠面板添加一个类,也许是 .panel。然后更新选择器以仅修改 div.panel 而不是页面上的每个 div。

        【讨论】:

        • @Jonathan -> $("div:not(#"+$(this).val()+")").slideUp();大声笑..这滑出了所有的div..空白屏幕..我想知道WTF。
        • 在代码之后阅读我的 cmets - 该脚本基于您在此处粘贴的代码 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        相关资源
        最近更新 更多