9

私はこれを理解することはできません。W3 Schoolsによると、チェックされたプロパティはチェックボックスのチェックされた状態を設定または返します。

では、なぜ機能し$('input').checked ? $('div').slideDown() : $('div').slideUp();ないのですか?

ただし、propを使用しても機能します。

$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();

これは、データベース値に基づいてチェックされるチェックボックス用です。

4

5 に答える 5

12

checked is a DOM element property so use it on DOM elements instead of jQuery objects.

$('input')[0].checked

if you have a jQuery object, use prop instead of attr since you are checking a property. Just as a reference:

$("<input type='checkbox' checked='checked'>").attr("checked") // "checked"
$("<input type='checkbox' checked='foo'>").attr("checked") // "checked"
$("<input type='checkbox' checked>").attr("checked") // "checked"
$("<input type='checkbox'>").attr("checked") // undefined

Whereas [0].getAttribute("checked") will return the actual value.

prop will return true or false based on whether or not the attribute exists at all

于 2013-02-26T04:28:16.913 に答える
4

checked is a property of the DOM object, not of the jQuery object. To make it work, you'd have to get the DOM object:

$('input')[0].checked;

You could also do .is(':checked').

于 2013-02-26T04:27:52.363 に答える
4

この場合、prop()ではなくが必要です。コード内で への呼び出しをにattr()置き換えると、通常は機能します。attr()prop()

http://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/から

特定の状況では、属性とプロパティの違いが重要になる場合があります。jQuery 1.6 より前では、.attr()一部の属性を取得するときにメソッドがプロパティ値を考慮に入れることがあり、一貫性のない動作を引き起こす可能性がありました。jQuery 1.6 の時点で.prop()メソッドはプロパティ値を明示的に取得する方法を提供し、.attr()属性を取得します。

elem.checked ==== true (Boolean)チェックボックスの状態で変わる

$(elem).prop("checked")====true (Boolean)チェックボックスの状態で変わる

elem.getAttribute("checked")====="checked" (String)チェックボックスの初期状態。変わらない

$(elem).attr("checked") (1.6)====="checked" (String)チェックボックスの初期状態。変わらない

$(elem).attr("checked") (1.6.1+)========"checked" (String)チェックボックスの状態で変わる

$(elem).attr("checked") (pre-1.6)=======true (Boolean)チェックボックスの状態で変化

また、この URL は、クエリ.prop() と .attr()の詳細に役立ちます

http://jsperf.com/is-checked-vs-attr-checked-checked/7/is-checked-vs-attr-checked-checked/7の違い

また、理解するにはhttp://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/ http://jsperf.com/is-checked-vs-attr-The elements atttribute and propertiesを参照してください。チェックチェック/7

于 2013-02-26T05:04:30.423 に答える
0

$('input') returns a JQuery object and it doesn't have checked property. You can use $('input')[0].checked.

于 2013-02-26T04:29:14.850 に答える
0

$('input').attr('checked')は時代遅れであり、使用する必要があります$('input').prop('checked')
さらに、jquery オブジェクトの$('input').checkedように機能せず、プロパティであるため、jquery がプロパティにアクセスするために思いついたのです。$('input')checked$('input').prop('checked')

ただし、jQueryオブジェクトをDOMオブジェクトに変換するには、これを行う必要があり
$('input')[0].checked、DOMオブジェクトになり、プロパティに直接アクセスできます.

ただし、jquery を使用してプロパティにアクセスするには、次のように使用する必要があります。

$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();

お役に立てれば!!

于 2013-02-26T04:31:24.157 に答える