0

すべての CMS 投稿を表すテーブルがあります。「すべてチェック/すべてチェック解除」をクリックして、すべての投稿を選択/選択解除できる機能を書いています。checkbox element

たとえば、これは何回クリックしても期待どおりに機能します。チェックボックスがチェックされている場合 - 「Check All is selected now」というアラートが表示されます。それ以外の場合 - 「Check All is Unchecked now」というアラートが表示されます

$("table thead input").click(function(){

 var checkboxes = $("table tbody tr input")

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

   alert('Check All is checked now');
 } else {

    alert('Check All is UNchecked now');
  }
 });

繰り返しますが、期待どおりに動作します。

ただし、 s を別のロジックに置き換えるalert()と、これは期待どおりに機能しなくなり、1 回だけになります。

$("table thead input").click(function(){

 var checkboxes = $("table tbody tr input")

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

  checkboxes.each(function(){   
    $(this).attr('checked', true);
  });

  } else {

    checkboxes.each(function(){

     $(this).attr('checked', false);
    });
  }
});

これらのチェックボックスをチェック/チェック解除しますが、一度だけ -$("table thead input")複数回クリックすると機能しません。

removeAttr('checked')の代わりにを試してみまし$(this).attr('checked', false)たが、うまくいきませんでした。

どうしたの?

4

1 に答える 1

1

.attr()の代わりに.prop()を使用して、チェック状態を設定します

$(this).prop('checked', false);//to uncheck
$(this).prop('checked', true);//to check

属性とプロパティ

コードは次のように簡略化できます

$("table thead input").change(function () {
    var checkboxes = $("table tbody tr input");
    checkboxes.prop('checked', this.checked)
});

または、要素が動的でない場合は以下へ

//cache the checkbox reference
var checkboxes = $("table tbody tr input");
$("table thead input").change(function () {
    checkboxes.prop('checked', this.checked)
});
于 2013-10-04T06:27:00.720 に答える