如何选中复选框时禁用和取消选中复选框?

cod*_*ris 3 checkbox jquery

我有一个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");

  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的html小提琴:http://jsfiddle.net/3fksv/16/

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

Lix*_*Lix 5

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

$("input.group1").removeAttr("disabled");
$("input.group1").removeAttr("checked");
Run Code Online (Sandbox Code Playgroud)

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

$("input.group1").removeAttr("disabled").removeAttr("checked");
Run Code Online (Sandbox Code Playgroud)

  • 它在文档中......“要删除的属性;从 1.7 版开始,它可以是一个以空格分隔的属性列表。” (2认同)

und*_*ned 5

checked并且disabled是属性,从jQuery 1.6开始,用于修改元素的属性,prop应该使用方法代替attr.

function enable_cb() {
   $("input.group1")
         .prop("disabled", this.checked)
         .prop("checked", this.checked);
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/JeqE5/