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代わりに メソッドを使用する必要があり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

そのように一度に 2 つの属性を削除できるとは思いません。関数への2つの呼び出しを使用する必要がある場合があり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 に答える