Jquery 为什么我不能基于复选框状态取消绑定事件?

Jquery 为什么我不能基于复选框状态取消绑定事件?,jquery,events,checkbox,triggers,Jquery,Events,Checkbox,Triggers,我正在尝试将事件侦听器附加到复选框,但前提是该复选框未选中。 但是,即使我尝试检查,触发覆盖的事件也会发生 转到此页: 从下拉列表中选择托管选项 尝试单击“专用主机”复选框 您将看到,即使我取消选中复选框,覆盖也会触发 这是我的密码: $grpBoxes.fireReveal = function($input) { //fire overlay only if input is not checked $input.on('change.overlay', fu

我正在尝试将事件侦听器附加到复选框,但前提是该复选框未选中。 但是,即使我尝试检查,触发覆盖的事件也会发生

转到此页:

从下拉列表中选择托管选项

尝试单击“专用主机”复选框

您将看到,即使我取消选中复选框,覆盖也会触发

这是我的密码:

$grpBoxes.fireReveal = function($input) {       

    //fire overlay only if input is not checked
    $input.on('change.overlay', function(e) {
        console.log($input.attr('checked'));
        if($input.is(':checked')) {                 
            $input.overlay({

            onBeforeLoad: function(){                       
                console.log('ready to fire');
                $input.addClass('fired');                           
            },

            // load it immediately after the construction
            load:true,

            // disable this for modal dialog-type of overlays
            closeOnClick: false

            });                     
        }

        else {
            $input.removeClass('fired');
            $input.off('change.overlay');
            console.log($input.attr('checked'));
            return false;       
        }   

    }); // end callback




}; // end fireReveal
这是我的实时代码: 以下是我的完整脚本:


我做错了什么?

为什么不在事件上绑定函数,然后在函数中测试复选框是否已选中?这种逻辑似乎比选择性绑定更简单。@Mathletics我试过这么做。它也不起作用。所以我想我应该只在复选框未选中的情况下绑定click事件。click事件发生在状态更改之前,因此在绑定函数后,它将触发覆盖,然后更改状态。这就是为什么您要绑定函数一次,检查状态,并根据状态触发覆盖。AmitErandole:返回到您的版本,执行@Mathletics所描述的操作。然后请注意,如果$input.prop':checked',true则执行else是错误的,并且将始终被评估为true。如果你愿意,你就应该这样做!this.checked{…}else{…}@AmitErandole您可能应该将绑定移动到更改事件,而不是单击;您只想在复选框更改为选中时激发,因此您并不真正关心单击。