3

我有一个 jquery 脚本,它连续禁用所有复选框并将它们标记为选中:

$(function() {
  enable_cb();
  $("#group1").click(enable_cb);
});

function enable_cb() {
  if (this.checked) {
     $("input.group1").attr("disabled", true);
     $("input.group1").attr("checked", true);
  } else {
     $("input.group1").removeAttr("disabled","checked");

  }
}

这是我对 html 的摆弄:http: //jsfiddle.net/3fksv/16/

我希望其余的复选框再次显示为活动状态,并在取消选中复选框时取消选中。我在脚本中做错了什么?

4

3 回答 3

6

checked并且disabled是属性,从 jQuery 1.6 开始,用于修改元素的属性,prop应该使用 method 而不是attr.

function enable_cb() {
   $("input.group1")
         .prop("disabled", this.checked)
         .prop("checked", this.checked);
}

http://jsfiddle.net/JeqE5/

于 2013-02-04T22:18:45.760 回答
5

我不认为你可以像那样一次删除两个属性。您可能必须对removeAttr()函数使用两次调用 -

$("input.group1").removeAttr("disabled");
$("input.group1").removeAttr("checked");

正如@nickf正确提到的那样,这些命令也可以链接 -

$("input.group1").removeAttr("disabled").removeAttr("checked");
于 2013-02-04T22:15:35.027 回答
0

演示:http: //jsfiddle.net/3fksv/18/

function enable_cb() {
   if (this.checked) {
      $("input.group1").attr("disabled", 'disabled');
      $("input.group1").attr("checked", 'checked');
   } else {
      $("input.group1").removeAttr("disabled","checked");
   }
}

$(function() {
   $("input.group1").attr("disabled", 'disabled');
   $("input.group1").attr("checked", 'checked');
   $("#group1").click(enable_cb);
});
于 2013-02-04T22:31:00.330 回答