【问题标题】:On-click radio button, hide div单击单选按钮,隐藏 div
【发布时间】:2013-04-05 08:57:34
【问题描述】:

当有人单击表单上的单选按钮(第二个单选按钮)时,我试图隐藏 div,但是当单击第一个单选按钮时,div 会重新显示(切换)。这是我的工作代码:http://jsfiddle.net/NKr7M/

如果您愿意,这里是 HTML:

<div class="grid howAnswer">
    <div class="col-1">
        <div class="button-left">
            <img src="http://i.imgur.com/RVmh2rz.png" />

            <input checked="checked" type="radio" id="id_delivery_0" value="chat" name="delivery" onclick="toggle(this)" />
        </div><!-- .button-left -->

        <div class="text-area top-text-area">
            <label for="id_delivery_0">
                AnswerChat By Appointment (Fastest)
            </label>
        </div><!-- .text-area -->
    </div><!-- .col-1 -->

    <div class="col-1">
        <div class="button-left" style="margin-left: 15px;">
            <img src="http://i.imgur.com/8J0SEVa.png" />

            <input type="radio" id="id_delivery_2" value="email" name="delivery" onclick="toggle(this)" />
        </div><!-- .button-left -->

        <div class="text-area bottom-text-area">
            <label for="id_delivery_2">
                AnswerMail ASAP (Within 1-2 days)
            </label>
        </div><!-- .text-area -->
    </div><!-- .col-1 -->
</div><!-- .grid -->

<!-- THIS IS WHAT I WANT TO HIDE -->
<div class="formInput">
    <p>Let's try and hide this div</p>
</div><!-- .formInput -->

还有 CSS:

/* General Declarations */
body { font-family: Arial, Helvetica, sans-serif; }

ul li { list-style: none; }

/* Form */
.col-1 li.howDoPadding { padding-bottom: 10px!important; }

.byAppointment { margin: 0 0 -4px 10px;}

.offlineForm .lightBlueText { 
    color: #80A9BD; 
    display: inline;
}

/* Grid */
*, *:after, *:before {
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

.grid:after {
    clear: both;
    content: "";
    display: table;
}

.grid.howAnswer > div.col-1 {
    padding-left: 90px;
    position: relative;
}

.grid.howAnswer .button-left {
    width: 80px;
    position: absolute;
    margin-left: 20px;
    left: 0;
    top: 0;
}

.button-left img { margin-right: -5px; }

.top-text-area { margin: 15px 0 10px; }

.bottom-text-area { margin: 10px 0 15px; }

.button-left { margin: 10px 0; }

/* Grid Gutters */
[class*='col-'] {
    float: left;
    padding-right: 20px;
}

[class*='col-']:last-of-type { padding-right: 0; }

.col-1 { width: 100%; }

我对 JavaScript 不是很精通,所以如果我能得到任何帮助,我将不胜感激。谢谢!

【问题讨论】:

  • 你在fiddle中尝试过的js在哪里?
  • 我还没有尝试任何 JavaScript 解决方案,这就是为什么我没有包括任何

标签: javascript jquery html css show-hide


【解决方案1】:

您可以使用toggle() 来做到这一点:

$('#id_delivery_0').on("click", function(){
   $(".formInput").hide();
});
$('#id_delivery_2').on("click", function(){
   $(".formInput").show();
});

工作小提琴:

http://jsfiddle.net/NKr7M/4/

【讨论】:

  • @CyrilPangilinan 我意识到这一点,但我确信他可以修改代码以使用单个按钮。
  • @everyone :) 更新了....因为让 OP 自己尝试一些东西显然是不受欢迎的
  • 哈哈哈我喜欢人们删除他们的 cmets,然后你就只能自言自语了!无价之宝!
  • @HanletEscaño 我发现自己经常这样做......(请不​​要删除你的)
【解决方案2】:

试试这个:

$("#id_delivery_0").on("change",function(){
    if($(this).prop("checked"))
       $(".formInput").hide();     
});

$("#id_delivery_2").on("change",function(){
    if($(this).prop("checked"))
       $(".formInput").show();     
});

jsFiddlehttp://jsfiddle.net/hescano/NKr7M/3/

【讨论】:

    【解决方案3】:

    我假设 jQuery 库没问题,因为你用 jQuery 标记了它,所以这里是 jQuery 响应:

    $(document).ready(function() {
        $("#id_delivery_0").click(function() {
            $(".formInput").show();
        });
        $("#id_delivery_2").click(function() {
            $(".formInput").hide();
        });
    });
    

    一定要包含 jQuery 库。

    【讨论】:

      【解决方案4】:

      LIVE DEMO

      $(':radio[name=delivery]').change(function(){ // Or simply: $("[name=delivery]")
          $('.formInput').toggle();
      });
      

      【讨论】:

      • 这个选择器语法是什么 :radio[name=delivery] 我从来没见过。我也把你在这里写的东西用小提琴写好了,只是那个选择器的不同。
      • @DylanHayes 你不需要标签选择器,但如果你有更多的name=delivery 元素,它只是更具体的jsfiddle.net/NKr7M/7。另外,我会使用 ID 而不是 .formInput
      • 太棒了,非常感谢。超级简单,完美运行。
      【解决方案5】:

      你可以这样做:

      $('#id_delivery_2').click( function(){
         $('.formInput').hide();
      });
      
      $('#id_delivery_0').click( function(){
            $('.formInput').show();
      });
      

      演示:http://jsfiddle.net/darkajax/jCuk9/

      【讨论】:

        【解决方案6】:
        $("#id_delivery_0").on('click',function(){
              $(".formInput").find('p').show();
        });
        
        $("#id_delivery_2").on('click',function(){
              $(".formInput").find('p').hide();
        });
        

        Fiddle

        【讨论】:

          【解决方案7】:
          $(document).ready(function(){
          
               $('#button1').click(function(event) { 
               $('#hide').hide();
          });
          
              $('#button2').click(function(event) { 
              $('#hide').show();
              });  
          }); 
          

          【讨论】:

          • 你应该解释你的答案
          • 当单选按钮1单击时,演示jQuery hide()方法,隐藏id="hide"元素。当单选按钮2单击时,jQuery show()方法可见id="hide"元素比如 textfiled、textarea 等。
          猜你喜欢
          • 1970-01-01
          • 2021-06-14
          • 2013-02-11
          • 2017-11-25
          • 2016-05-21
          • 1970-01-01
          • 2013-01-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多