1

我有两个隐藏的 div 元素,$(document).ready(function(){}如果它们的特定复选框被选中,它们应该出现,如果它被选中然后未选中,它们就会消失。我可以在使用非常容易地选择复选框时显示元素,show()或者slideDown()当我使用if else语句时,它每次都返回为 false 并且表单保持隐藏...

$(document).ready(function(){
        if($("#upload_yes").is(':checked')) {
            $("#upload_form").show();
        } else {
            $("#upload_form").hide();
        }

        if($("#new_info_yes").is(':checked')) {
                $("#new_info_form").slideDown(500);
        } else {
                $("#new_info_form").hide();
        }   
    }); 
4

3 回答 3

4

您没有将此代码绑定到正确的事件:

$(document).ready(function() {
  $("#upload_yes").on('change', function() {
    if ($(this).is(':checked')) {
      $("#upload_form").show();
      $("#new_info_form").slideDown(500);
    } else {
      $("#upload_form, #new_info_form").hide();
    }
  });
}); 
于 2012-08-08T00:34:08.047 回答
3

看到这个小提琴

您必须在change活动中完成工作。

然后调用.trigger('change')复选框使 div 在初始页面加载时显示/隐藏。

编码 :

$(document).ready(function(){

    $('input#upload_yes').change(function(){
        if($(this).is(':checked')) {
            $("#upload_form").show();
        } else {
            $("#upload_form").hide();
        }
    });

    $('input#new_info_yes').change(function(){
         if($(this).is(':checked')) {
                $("#new_info_form").slideDown(500);
        } else {
                $("#new_info_form").hide();
        }   
    });

    //Trigger the change event so the divs are initially shown or hidden.
    $('input[type=checkbox]').trigger('change');

}); 
于 2012-08-08T00:40:38.830 回答
1

要评估是否发生了变化,您需要在事件中执行代码!(在这种情况下:)change因为你正在做的是获取is(':checked')just at的值,$(document).ready它总是会返回false,因为在第一刻你的元素没有被检查。


好吧,这是正确的方法:-)

(我试图减少代码)

现场演示:

http://jsfiddle.net/oscarj24/RSDRg/

代码:

$(document).ready(function() {
  $('#upload_yes').on('change', function() {
     var done = $(this).is(':checked');
     if(done) {
       $('#upload_form').show();
       $('#new_info_form').slideDown(500);
     } else {
       var frm = $('#upload_form').add('#new_info_form');
       frm.hide();
     }
  });
});
于 2012-08-08T00:42:12.480 回答