如何在未选中单选按钮的情况下使用jQuery / JavaScript查找?

How can I use jQuery/JavaScript to find out when a radio button is unchecked?

本问题已经有最佳答案,请猛点这里访问。

当复选框被选中时,我试图使用jquery函数隐藏/显示某些表单元素。选中单选按钮时,还应使用相同的功能隐藏/显示表单元素。收音机按钮有问题。我的函数无法判断何时取消选中某个单选按钮,因此在选中时变为可见的DIV现在可以隐藏,因为它未选中。我已经显示了下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!-- html on one of the pages -->
<fieldset>
  <label for="viaMail">Send offers to my mail</label>
  <input type="checkbox" id="viaMail" class="slide" autocomplete="off">

  <label for="viaEmail">Send offers to my email address</label>
  <input type="checkbox" id="viaEmail" autocomplete="off">

</fieldset>

  <!-- div hidden with css using display: none rule -->
   <!-- input fields for mailing addresses etc -->

<!-- end page one html -->

<!-- html on page two -->  
<fieldset>
  <label for="viaMail">Send offers to my mail</label>
  <input type="radio" name="group1" id="viaMail" class="slide" autocomplete="off">

  <label for="viaEmail">Send offers to my email address</label>
  <input type="radio" name="group1" id="viaEmail" autocomplete="off">

</fieldset>

  <!-- div hidden with css using display: none rule -->
   <!-- input fields for mailing addresses etc -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* the js function */

ShowHideDiv={
init:function(){
    var radcheck = $(".slide");

//if the input element has the class 'slide' then the value of it's 'id' attribute
//is retrieved and the class which has the same name as the 'id' of the current input
//element is hidden or slided into view - in this case the 'viaMail' class

    radcheck.on("change",function(){
        if($(this).prop('checked')== true) {
            $('body').find("."+$(this).attr('id')).slideDown('slow');
        }
        else {
            $('body').find("."+$(this).attr('id')).slideUp('fast');
        }
    });

}
  }

我已经尝试了复选框的功能,它工作正常。它不适用于单选按钮-DIV是"向下滑动"到视图中,但它不会在选择其他单选按钮时通过"向上滑动"消失。非常感谢你的帮助。


你可以用.is()来检查类似的东西。

1
if( $(this).is(':checked') )

文档中有更多关于它的信息。

另外,你也可以只用$("." + $(this).attr('id'))来代替$('body').find("."+$(this).attr('id'))

这里演示

1
2
3
4
5
6
7
8
9
$(function () {
    $('.slide').on("change", function () {
        if ($(this).is(':checked')) {
            $("." + $(this).attr('id')).slideDown('slow');
        } else {
            $("." + $(this).attr('id')).slideUp('fast');
        }
    });
});


应该像下面那样

1
if( $(this).prop('checked', true) )


1
if( !$(this).is(':checked') ) // if its unchecked