1

Web で多くの検索を行ったところ$('#checkbox').attr('checked')、文字列として扱う例やブール値として扱う例が見つかりました。

私の場合、このステートメントは期待どおりに機能することがわかりました。

$('#AcceptAgreement').attr('checked', false);

しかし、これはしません:

if ($('#AcceptAgreement').attr('checked') == true)

実際には値が「チェック済み」であるため、2 番目のステートメントは false です。

それで、それはどれですか?文字列またはブール値ですか?どうすれば信頼できる方法で読み書きできますか?

4

6 に答える 6

4

おそらく、属性を使用するべきではありません。状態を変更するには、dom ノードの「checked」プロパティを使用するだけです

$('#AcceptAgreement')[0].checked = false
if ($('#AcceptAgreement')[0].checked)
于 2012-04-27T21:17:16.797 に答える
3

これは、使用している jQuery のバージョンによって異なります。

checkedプロパティと属性の両方です。jQuery の古いバージョンで.attr()は、通常はブール値である属性ではなく、常にプロパティを返しました。新しいバージョンの jquery (1.6+) に.propは、ブール値のプロパティ値を返す新しいメソッドが呼び出され.attr()、文字列値を正しく返すようになりました。プロパティが変更されたときに属性が常に更新されるかどうかはわかりません。

于 2012-04-27T21:10:24.340 に答える
1

データ型を見つける基本的な方法があります

console.log(typeof $('#AcceptAgreement').attr('checked'));

ただし、jQuery 1.7 より前では、プロパティ値を返すために使用されていましたが、現在は純粋な文字列を返します。

これに代わる別の方法は、.prop('checked')どちらがブール値を返すかです。

于 2012-04-27T21:13:34.683 に答える
1

これは文字列ですが、jQuery ではブール値で設定でき、それに応じて属性が変更されます。「false」に設定すると、 がattr('checked')返されundefinedます。

于 2012-04-27T21:09:03.593 に答える
0

書くには、次を使用する必要があります。

$('#AcceptAgreement').attr('checked', 'checked');

チェックされているかどうかを知りたい場合は、次を使用できます。

if($('#AcceptAgreement').attr('checked'))
于 2012-04-27T21:12:08.060 に答える
0

あなたが使用することができます:

if ($('#AcceptAgreement').is(':checked'))
{
   //...
}

または短縮:

$('#isAgeSelected').is(':checked') ? /*true*/ : /*false*/ ;
于 2012-04-27T21:12:20.547 に答える