回答:
jQuery 3
jQueryの3のとおり、removeAttr
ないではないに対応するプロパティを設定しfalse
、もう:
使用して、jQueryの3.0より前
.removeAttr()
のようなブール属性上checked
、selected
またはreadonly
も対応するという名前のプロパティを設定しますfalse
。この動作はInternet Explorerの古いバージョンで必要でしたが、属性が初期値を表し、プロパティが現在の(動的)値を表すため、最新のブラウザーでは正しくありません。ほとんどの場合
.removeAttr( "checked" )
、DOM要素で使用するのは間違いです。DOMが後でシリアル化されてHTML文字列に戻される場合のみ、それが役立つ場合があります。他のすべてのケースで.prop( "checked", false )
は、代わりに使用する必要があります。
したがって.prop('checked',false)
、このバージョンを使用する場合にのみ正しい方法です。
元の回答(2011年から):
基になるブールプロパティ(そのchecked
うちの1つ)を持つ属性の場合removeAttr
、基になるプロパティをに自動的に設定しfalse
ます。(これは、jQuery 1.6.1で追加された下位互換性「修正」の1つであることに注意してください)。
したがって、どちらも機能します...しかし、(を使用してprop
)提供した2番目の例は、2つのうちより正確です。チェックボックスをオフにすることが目的の場合は、属性ではなくプロパティに影響を与えたいので、実行する必要はありremoveAttr
ません。
removeProp()
]を使用して、チェック済み、無効化、選択などのネイティブプロパティを削除しないでください。これにより、プロパティが完全に削除され、削除すると、要素に再度追加できなくなります。.prop()
これらのプロパティをfalseに設定するために使用します代わりに。」removeProp
実際には、カスタムプロパティでのみ使用することを目的としています。
使用checked
:チェックボックスのtrue、falseプロパティ。
jQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
Chromeに問題があり、両方の機能を使用して解決したので、propとattrの両方を使用することをお勧めします。
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
$("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
同じことを行う別の方法は、type = checkbox属性でフィルタリングすることです。
$('input[type="checkbox"]').removeAttr('checked');
または
$('input[type="checkbox"]').prop('checked' , false);
特定の状況では、属性とプロパティの違いが重要になる可能性があることに注意してください。jQuery 1.6より前のバージョンでは、.attr()メソッドは、一部の属性を取得するときにプロパティ値を考慮に入れていたため、動作が不安定になる可能性がありました。jQuery 1.6以降、.prop()メソッドはプロパティ値を明示的に取得する方法を提供し、.attr()は属性を取得します。
もっと知る ...