2013-01-24 27 views
0

的取消選中I類具有低於jQuery的功能增加了一些類的元素,當複選框被選中這是所有好。 但是,如果複選框,然後取消選中,我想然後從元素中刪除這些相同的類。 我猜這將與.removeClass,但我不知道在哪裏添加它。
感謝jQuery的去除複選框

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); 
}); 
+0

可你的HTML貼? – Anujith

回答

0

「已禁用」與其說是一類,因爲它是一個屬性。

解釋這裏:jQuery - checkbox enable/disable

祝你好運!

+0

感謝您的回覆。我將「禁用」類添加到禁用複選框。當一個人被檢查時,他們都變得殘疾。但我堅持什麼上。然後去除類,如果該複選框處於未選中狀態(他們都成爲再次啓用) – user537137

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,下面是解釋它的答案:

複選框恰好是特殊情況下的變化和 點擊是可以互換的,因爲你不能沒有也觸發按消防change事件 。

Source

+1

您應該使用,而不是「點擊」,因爲我可以更新使用鍵盤輸入的「改變」。 –

+0

Click事件也適用於鍵盤輸入。看到這個小提琴 - http://jsfiddle.net/4E7hB/ – Cdeez

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(); 
    }); 
});