最新バージョンのjquery(1.7.1)にアップグレードした後、次のコードが評価されなくなったことに気づきました
if( $('#item').attr('checked') === true ){
//do something
}
なぜ彼らがこの変更を行ったのかは理解できますが、なぜ彼らがこれを行ったのかについてのドキュメントへのリンクはありますか?コードが正しく機能することを確認したいのですが、上記をかなり長い間間違って使用している可能性があります。
むしろ使用する
if( $('#item').is(':checked')){
//do something
}
.is
チェックボックスがオンになっているかどうかを確認するために使用します。下記参照、
if( $('#item').is(':checked')){
..
編集:
私の知る限り、jQuery$('#item').attr('checked')
がtrueを返すことはありません。checked
またはを返しますundefined
。
ケビンが指摘したように、
1.6以降の.attr('checked')は、文字列を適切に返します(すべての属性は文字列です)。ブールプロパティが必要な場合は、新しい.prop()メソッドを使用します
を比較する場合はtrue
、を使用しますthis.checked
。以下を参照してください。<-this.checked
これは他のどの方法よりも高速であるため、使用することをお勧めします。
if (this.checked === true) {
..
また
.prop
以下のように使用してください、デモ
if($(this).prop('checked') === true) {
..
たとえば、すべてのブラウザにはチェックを行う独自の方法があるため、機能していません。
チェック済み、checked = "checked"、checked="true"。
したがって、属性の代わりにセレクター:checkedを使用する必要があります。そしてjQueryはすべてのブラウザを処理します:)