1

我有一个 id 为“PCsetup”的 div 设置为在选中三个复选框(#PCOF、#PCTMI 或 #PCRM)中的任何一个时滑动打开,但如果三个复选框中的一个或两个已选中,并且用户检查另一个复选框,我想在它滑动打开之前结束该功能,因为它实际上会关闭“PCsetup”div。我怎样才能让函数检查其他两个复选框是否被选中,如果没有,让 div 向下滑动?这是我到目前为止所拥有的:

$(function() {
$("input[type=checkbox]").on('click', function(){
    if ($("#PCOF").is(':checked'))|| ($("#PCRM").is(':checked')) {
       return;
    } else if $('#PCTMI').is(':checked')){
        $("#PCsetup").slideDown("slow");
    } else { 
        $("#PCsetup").slideUp("slow");
    }
});
4

2 回答 2

0

有几件事:1.您示例中的匿名函数未关闭,因此代码无效。2. 我很难完全按照您要完成的操作,但听起来您想在选中任何复选框组合时显示 div 并在未选中任何复选框时隐藏它。这将为您提供以下结果:

$(document).ready(function() {
  $(function() {
    $('#PCOF, #PCTMI, #PCRM').on('click', function() {
      var numChecked = $('#PCOF:checked, #PCTMI:checked, #PCRM:checked').length;

      if (!numChecked) {
        $('#PCsetup:visible').slideUp('slow');
      } else {
        $('#PCsetup').slideDown('slow');
      }   
    });
  });
});

http://jsbin.com/IsutuhI/3

于 2013-08-26T00:44:47.967 回答
0

就像是

$(function() {
    var $chks = $('#PCOF, #PCRM, #PCTMI');
    $chks.on('click', function(){
        var checked = $chks.filter(':checked').length > 0, visible = $("#PCsetup").is(':visible');
        console.log('dd', checked, visible)

        if (checked && !visible) {
            $("#PCsetup").finish().slideDown("slow");
        } else if(!checked && visible){
            $("#PCsetup").finish().slideUp("slow");
        }
    });
});

演示:小提琴

于 2013-08-26T00:46:29.860 回答