0

jQueryが「checked」属性の値を返さないのはなぜですか?

何が入っていても、常に「チェック済み」を返します。

<div id='div' checked='checked_value'></div>
<script>
    var attr_value = $('#div').attr('checked');
    alert(attr_value);
    // attr_value == 'checked' no matter what
</script>

http://jsfiddle.net/BbRmH/2/

1.4では問題ありませんでしたが、1.8にアップグレードすると、コードが完全に台無しになりました。checked属性をよく使います。

4

1 に答える 1

1

jQueryの最新バージョンでは、正しい構文は次のようになると思います-

$("element").prop('checked');

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


ただし、このプロパティを誤って使用している可能性があると思います。通常、checkedセレクターの存在をテストするだけです。実際には2つの状態しかあり得ません。チェックされている場合とチェックされていない場合。通常、次のようなものを使用します-

$('.groupOfCheckboxes:checked')

これにより、チェックされている一致したすべてのチェックボックスのリストが返されます。このプロパティは<div>要素でも使用しました。これは有効なHTMLではありません。ブラウザ間で最も一貫性のある結果が必要な場合は、有効なマークアップに固執する必要があります。

于 2012-11-10T01:38:28.150 に答える