添加此jQuery后无法取消选中复选框

时间:2015-07-17 11:34:10

标签: jquery class checkbox uncheck

代码应该禁用一组复选框。有两类复选框,如果我点击一个,它会禁用另一个。问题是如果我改变主意并想要取消选择(取消选中),它就不允许我取消选中。

$(".single-checkbox").click(function(){
      if ($(this).prop("checked", "checked")) {
          $('.deleteDone').prop('disabled', true);
     } else {
          // $(this).prop("unchecked", "unchecked")
          // $('.deleteDone').prop('disabled', false);      
          // $(".single-checkbox").prop("checked", false);
      }
});

我在声明的其他部分尝试了各种各样的事情,但没有运气。 你有什么想法吗?关于取消选中复选框有几个问题,我尝试了代码中的变体,但没有运气。

任何帮助表示感谢。

5 个答案:

答案 0 :(得分:4)

您正在设置值,而不是在if语句中检查它。

if ($(this).prop("checked", "checked")) {

相反,您应该检查是否选中了复选框。

if ($(this).is(":checked")) {

答案 1 :(得分:1)

$(this).prop("checked", "checked")语句将设置属性checked的值,而"checked"将评估为真,它始终为checked

可以使用这些陈述,

if(this.checked) {
if($(this).is(":checked")){
if($(this).prop("checked")){

但是,您可以使用脚本

$(".single-checkbox").change(function(){
    $('.deleteDone').prop('disabled', this.checked);
});

答案 2 :(得分:0)

$(this).prop("checked", "checked")确保无论何时点击该复选框都会立即进行检查。

如果要确定选中了复选框,请执行以下操作: if ($(this).prop("checked"))

解释您在代码中观察到的行为:

if ($(this).prop("checked", "checked")) {
    $('.deleteDone').prop('disabled', true);
}

$(this).prop("checked", "checked")返回一个对象,这是真实的。这意味着$('.deleteDone').prop('disabled', true);无论何种情况都会被执行。这意味着类deleteDone的元素总是被禁用。

答案 3 :(得分:0)

我认为点击复选框后,全部复选框将禁用bcoz class .deleteDone,因此您不允许再次点击。您需要为单击的复选框禁用false

  $(".single-checkbox").click(function(){
          if ($(this).is(":checked")) {
            $('.deleteDone').prop('disabled', true);
            // Add this //
            $(this).removeAttr('disabled');
         } else {
            //$(this).prop("unchecked", "unchecked")
            //$('.deleteDone').prop('disabled', false);

            //$(".single-checkbox").prop("checked", false);
          }
    });

答案 4 :(得分:0)

$('.single-checkbox, .deleteDone').click(function(){ // if you click any of the classes
    var isChecked = $(this).is(':checked'); // true or false

    if (isChecked) {
        var cbToDisable = $(this).attr('class') == 'single-checkbox' ? 'deleteDone' : 'single-checkbox'; // disable the other class
        $(cbToDisable).prop('disabled', isChecked); // do it
    }
});