web-dev-qa-db-ja.com

チェックボックスをクリックしても属性checked = 'checked'が追加されない理由

チェックボックスをクリックすると、チェックされた属性が追加されないのはなぜですか?ここでコードを見ることができます http://jsfiddle.net/FCrSg/

21
felix

あなたは何をしようとしているのですか?チェックされているかどうか調べますか?

$('.user_roles').click(function(){ 
    console.log( $(this).is(':checked'));
});

http://jsfiddle.net/petersendidit/FCrSg/1/

8
PetersenDidIt

HTML属性checkedは、ページの読み込み時にデフォルトでチェックされることを意味します。このは、チェックボックスがクリックされても変更されません

<input type="checkbox" checked="checked"> <!-- The HTML attribute -->

DOMプロパティcheckedは実際にはチェックボックスの現在の状態であり、true/falseのいずれかです。このwillは、チェックボックスがクリックされると変更されますが、HTMLを検査すると表示されません。

$('input:check')[0].checked == true;
// Whether or not the checkbox is currently checked
76
David Tang

コンソールに表示される要素に表示されるようにする場合は、ネイティブ setAttribute() メソッドを使用します。

例:http://jsfiddle.net/FCrSg/2/

this.setAttribute('checked',this.checked);

したがって、次のようになります。

$('.user_roles').click(function(){
    this.setAttribute('checked',this.checked);
    console.log( $(this) );
});

次に、コンソールから次の情報が得られます。

<input class=​"user_roles" type=​"checkbox" checked=​"true">​

通常、そのような属性セットは必要ありませんが。通常、プロパティで十分です。

2
user113716