jQuery在取消选中复选框时删除类

时间:2013-01-24 05:52:41

标签: jquery jquery-selectors

我有下面的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);  
});

3 个答案:

答案 0 :(得分:0)

“禁用”不是一个类,因为它是一个属性。

在此解释:jQuery - checkbox enable/disable

祝你好运!

答案 1 :(得分: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
    }
});

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

  

复选框恰好是更改和的特殊情况   click是可互换的,因为你无法触发change事件   没有触发点击。

Source

答案 2 :(得分: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();
    });
});