2011-12-29 12 views
3

「test」というIDのチェックボックスがあり、jQuery 1.5.2がロードされたページにそのチェックボックスがあります。* [チェックされた]チェックボックスが1つのチェックボックスに一致しないのはなぜですか?

<input id="test" type="checkbox"/> 

今私は... checked状態でそれを設定するには、チェックボックスをクリックした場合

なぜ$("#test").is(":checked")リターンtrue$("#test").is("*[checked]")リターンfalseを行います。他の言葉で「要素がchecked属性を持っている場合は、それを拾う」 - ここで

[checked]が現在でを確認された要素がcheckedプロパティをいない属性選びセレクタであるjsFiddle with the described scenario

+0

続きを見るhttp://stackoverflow.com/questions/8673570/why-does-checked-act-like-checked-when-using-jquerys-filter-method –

答えて

8

です。

チェックボックスがオンになっているかどうかを確認する場合は、:checkedを使用する必要があります。

使用例:あなたは、パフォーマンス上の理由から.prop()機能を使用することができますjQueryの1.6以降で

if($('#test').is(':checked')) 
{ 
    return true; 
} 

if($('#test').prop('checked')) 
{ 
    return true; 
} 
+0

これは別の質問である必要がありますが、しかし、このシナリオでは同じように見えます:http://jsfiddle.net/2QZvU/9/ –

2

checkedinput要素の属性ではありませんので。 プロパティです。 *[checked]セレクタは、要素に決して存在しないchecked属性を持っているかどうかをチェックします。オブジェクトのcheckedプロパティを設定するinput要素にchecked="checked"を追加することはできますが、ボックスをオフにしてもその属性は常に存在します。チェックとチェックを外すと、checked属性ではなく、チェックボックスのプロパティがcheckedに変更されるだけです。

0

jQueryのプロパティページcheckedプロパティの説明を参照してください:[:確認]このhttp://jsfiddle.net/2QZvU/5/

が、それは*でなければなりません

http://api.jquery.com/prop/

+0

OPは1.6+ではなく、jQuery 1.5.2を使用しています。 – MacMac

+0

はい、そのページは前後に説明しています。1.6 –

+0

しかし、OP質問には答えません。 – MacMac

0

チェック

マットが確認言ったように属性ではないプロパティ

2

チェックボックスのチェックがオブジェクトに反映されていますプロパティchecked。これはDOM属性checkedによって設定できますが、方向は一方向です。オブジェクトのプロパティが変更されたときにDOM属性が更新されません。 :checkedは、オブジェクトのプロパティをチェックする専用の擬似セレクタです。 [checked]は、DOM属性の有無をチェックするセレクタです。

関連する問題