2011-03-08 11 views
2

実際にチェック可能な入力を選択する唯一の方法は、:checkedセレクタを使うことです。JQUERYでセレクタとして機能しないのはなぜですか?

$("INPUT[checked]") 

他の属性のために働くように見えるのに対し:

が、これは動作しませんなぜ技術的な理由はありますか?

+0

私の推測では、[css selector abiltiies](http://reference.sitepoint.com/css/pseudoclass-checked)をそのまま使用しています。しかし、セレクタ内の属性を使用することも有効です。 –

+4

なぜ機能しないのですか? http://jsfiddle.net/QCCS3/ – Sotiris

答えて

2

"input[checked]"は、元のHTMLソースコードに基づいて選択します。 checked属性を含むHTMLタグに基づくINPUT要素のみが選択されます。

ライブデモ:私のデモでhttp://jsfiddle.net/simevidas/PXudH/

、第2のチェック・ボックス(「B」)は関係なく、あなたは2つのチェックボックスのチェックを外す/チェック方法を、すべての回で選択されません。

5

あなたは属性の値を配置する必要がありますので。しかし、それは何ですか?あなたはXHTML checked="checked"で、HTML4/5では普通のcheckedと書いています。 DOMモデルはそれを真として格納する必要があります。

$('input[checked="checked"]'); // Poor 
$('input[checked=true]'); // Maybe 

しかし、それは理由潜在的なブラウザの違いで骨の折れるで、ブール値をチェックし、それを行うための具体的な方法があります。

$('input:checked'); // Correct 

内部実装は、要素.checkedの属性をチェックするだけです。 v1.5.1から

filters: { 

    // ... 

    checked: function(elem) { 
     return elem.checked === true; 
    }, 

    // ... 
} 
0

私は技術的な理由は、jQueryのセレクタは、大文字と小文字が区別されていることかもしれないと思います。これはすべての大文字のINPUTタグで機能します

0

XHTMLではchecked属性の後に="checked"が必要ですが、有効なXHTMLを記述しない人もいます。 1つの式しか持たない方が簡単になります。

+0

思考せずに、私はXHTMLが= "checked"を要求しているが、人々は必ずしもそれを入れないと書いている。 –

+0

はい、しかしXHTMLの妥当性は無関係です。 HTML/XHTML文書であるかどうかにかかわらず、すべてのブラウザはこの "を認識します。 –

+0

はい、2つの方法で記述できるので、項目がチェックされているかどうかをチェックするには、属性と属性の2つのセレクタが必要です。 –

1

入力[チェックされています]が存在する可能性がある属性を検索し、htmlによってはチェックされなくなることさえあります。 input [checked]は生成されたHTMLに既に 'checked'属性があることが必要です。これはあなたが知っていたと思います。 <input type="checkbox"/>がどのように生成されたかに応じて、ユーザーが入力をクリックするまではtrueまたはそうでないかもしれません。クリックした後でも、属性キー値のペアhtmlがブラウザのように見えます。

関連する問題