0

id="Paragraph1" という名前の段落内の各子チェックボックスを選択し、チェックされている場合はチェックを外し、jQuery で無効にするにはどうすればよいですか。

例:

<input type="checkbox" id="chkMain"><br />
<p id="Paragraph1">
    <input type="checkbox" id"chk1"><br />
    <input type="checkbox" id"chk2"><br />
    <input type="checkbox" id"chk3"><br />
    <input type="checkbox" id"chk4"><br />
</p>

jQuery の選択:

$("#chkMain:not(:checked)").change(function() {
    $("#Paragraph1").children("input[type='checkbox' :checked]").each(function() {
        $(this).removeAttr("checked").attr("disabled",disabled");     
    });
});

このコードは、IE8 では何らかの理由で半分の時間しか機能しないため、正しく機能していません。また、find の使用が正しく機能していないか、b/ca 段落が適切な親ではない可能性があります。

4

3 に答える 3

1

input[type='checkbox' :checked]は正しいセレクタではありません。

そのはず:

input[type='checkbox']:checked

そして、次のようにコードを単純化できると思います。

$('#Paragraph1 input[type="checkbox"]:checked')  // select all checked input
                    .removeAttr('checked')       // remove checked attribute
                    .prop('disabled', true);     // make em disabled
于 2013-02-18T18:19:05.557 に答える
1

これをすべて置き換えます:

$("#Paragraph1").children("input[type='checkbox' :checked]").each(function() {
   $(this).removeAttr("checked").attr("disabled",disabled");     
  });

これとともに:

 $("#Paragraph1 input[type='checkbox']:checked")
     .prop('checked', false)
     .prop('disabled', true);
  • eachセット内のすべての要素で jQuery API では利用できないことを実行したい場合、alertまたは AJAX 要求を送信する場合に使用する必要があります。

  • prop可能な場合は使用し、属性を台無しにしないでください。

  • CSS セレクターのスペースは「の子」を意味するため:checked、Paragraph1 と入力の間のスペースを削除してスペースを追加します。あなたが使用できる直接の子供のためにparent > children

これのように:

$("#Paragraph1 > input[type='checkbox']:checked")
     .prop('checked', false)
     .prop('disabled', true);
于 2013-02-18T18:21:43.637 に答える
1

コードにいくつかの構文エラーがあります。propメソッドを使用できます。

$("#chkMain").change(function() {
     $("#Paragraph1 input[type='checkbox']")
              .prop('checked', this.checked) 
              .prop('disabled', !this.checked)
});
于 2013-02-18T18:22:15.760 に答える