3

HTML:

<table id="list">
   <tr>
      <td><input type="checkbox" checked="true"></td>
      <td>...</td>
   </tr>
   <tr>
      <td><input type="checkbox" checked="true"></td>
      ...
   </tr>
   ...
</table>

JS:

$('#list tr').each(function(){
   console.log(
        $(this).find('input[type="checkbox"]').is(':checked')
   );    
});

問題: 上記のログ ステートメントは常に true を返します。各 tr にはいくつかのデータが保持されており、このデータを使用してアクションを実行したいと考えています。is(':checked')ただし、ユーザーは一部のエンティティの選択を解除できますが、この場合、エントリが選択解除/チェック解除されていても常に true を返すため、これは不可能 です。

これを修正する方法はありますか?

4

3 に答える 3

4

あなたの「checked」属性はtrueその値として持っているので、持っていてもチェックされるように返さtrue<input type="checkbox" checked />ます。

プロパティが変更されたときに取得する追加機能を使用して、コードを使用してデモを作成しました。.is(":checked")

$("input").change(function() {
    console.log($(this).is(':checked'));
});

そしてそれは変化を示しています。あなたの問題はどこかにあるはずです。

于 2013-03-07T19:13:46.443 に答える
3

私の推測では、あなたは実際にこれを使用しています:

input type="checkbox" checked="false"

"false"(文字列として)評価されるため、チェックされたチェックボックスになりますtrue

チェックボックスをオフにしたい場合は、checked 属性を含めないでください。

于 2013-03-07T19:05:56.693 に答える
2

最初に、以下のステートメントですべてのチェックボックスを選択します。1 つがチェックされると、true が返されます。

$(this).find('input[type="checkbox"]').is(':checked')

次に、checked のデフォルト値を check="checked" にする必要があります。

于 2013-03-07T19:05:37.097 に答える