私はこれが働くだろうと思った:チェックボックスがオンになっているかチェックされていないかを確認するにはどうすればよいですか?
if ($(this).attr('checked')) {}
が、私はそれをこのように書かなければならなかった:
if ($(this).is(':checked')) {}
Q:なぜ?
私はこれが働くだろうと思った:チェックボックスがオンになっているかチェックされていないかを確認するにはどうすればよいですか?
if ($(this).attr('checked')) {}
が、私はそれをこのように書かなければならなかった:
if ($(this).is(':checked')) {}
Q:なぜ?
は最近、このをしてきた、それはあなたが使用しているのjQueryのバージョンに依存します。 1.6以降は、ブラウザの動作によって一貫性のない結果が返される可能性があるため、ネイティブプロパティ(例:「checked」、「disabled」)を持つattr
の機能 - 属性は存在するかどうかに関係なく変更されます。
1.6でプロパティを設定またはテストする正しい方法は、常にtrueまたはfalseを返す新しいprop
関数です。 2番目の方法は、テストにも有効です。
あなたはattrが確認を要求、あなたはブール値を取得されていません。
// this would be correct
if($(this).attr('checked') == 'checked')
// jQuery 1.6+
if($(this).prop('checked'))
いっそのこと、ただ返すthis.checked
を使用するか "true" または "false"。特にDOMノードがある場合は、jQueryを使用する必要はありません。
jQueryの代替機能がある場合はネイティブJavaScriptを使用することを恐れています。なぜなら、あるブラウザでは一方向の動作を行い、別のブラウザでは別の動作をするかどうかわからないからです。 jQueryは、コードが正規化されていることを確認するのに役立ちます。 –
わかりましたが、私はほとんどの場合同じアプローチを取っています。しかし、 'checked'プロパティは100%クロスブラウザなので、この特定のケースでは期待通りに動作します。 – ehynds
なぜ質問ではないですか。これは奇妙な2kユーザーのようですか? – Hogan
+1私を笑わせるための@Hogan。 – pixelbobby
どのjqueryバージョンを使用していますか? – scrappedcola