0

我有下面的 jQuery 函数,它在选中复选框时向元素添加一些类,这一切都很好。但是,如果未选中该复选框,我想从元素中删除这些相同的类。我猜它会与 .removeClass 一起使用,但我不知道在哪里添加它。
谢谢

function countDouble() {      
    var d = $("input.double:checked").length;
    var s = $("input.single:checked").length;

    if (d === 2) {
   $(".twoday input:disabled").addClass("disabled");
       $(".twoday input:disabled + label").addClass("disabled");
    };
    if (s === 1) {
   $(".oneday input:disabled").addClass("disabled");
       $(".oneday input:disabled + label").addClass("disabled");
    };
};

jQuery(document).ready(function(){              
    countDouble();
    $(":checkbox").click(countDouble);  
});
4

3 回答 3

0

请参阅以下代码:

$('#myform :checkbox').click(function() {
    var $this = $(this);
    // $this will contain a reference to the checkbox   
    if ($this.is(':checked')) {
        // the checkbox was checked, call the function to addClass 
    } else {
        // the checkbox was unchecked, call the function to removeClass
    }
});

更新:澄清.clickvs .change,这是一个解释它的答案:

复选框恰好是更改和单击可互换的特殊情况,因为您无法在不触发单击的情况下触发更改事件。

资源

于 2013-01-24T06:01:08.463 回答
0

“禁用”与其说是一个类,不如说是一个属性。

在这里解释:jQuery - 复选框启用/禁用

祝你好运!

于 2013-01-24T05:57:12.590 回答
0

这是您的代码的一个变体,它将起作用。您可以在条件语句中添加额外的调用以满足您的需要。

http://jsfiddle.net/UefHa/

 function countDouble() {      
    var d = $("input.double").is(':checked');
    var s = $("input.single").is(':checked');

    if (d === true) {
       $(".twoday input").prop("disabled",true).addClass("disabled");
    } else {
       $(".twoday input").prop("disabled",false).removeClass("disabled");
    }

    if (s === true) {
       $(".oneday input").prop("disabled",true).addClass("disabled");
    } else {
       $(".oneday input").prop("disabled",false).removeClass("disabled");
    }
}

jQuery(document).ready(function(){              
    $('input[type=checkbox]').change( function() {
        countDouble();
    });
});
于 2013-01-24T06:09:58.573 回答