ホームページ >ウェブフロントエンド >jsチュートリアル >チェックされたattribute_jqueryを変更する場合のjQueryのattr()とprop()の違い
チェックボックスを選択ボタンにするときに問題が発生しました。ステートメント $.attr('checked',true) を使用してチェックボックスの属性をチェックに変更します。これは Chrome ブラウザーでは初めてです。最初のクリックが有効になった後は動作しません。IE8 は問題ありません。
Baidu は、HTML の属性が属性とプロパティに分かれていることが原因であることを突き止めました。ここでは、後者をプロパティと呼びます。
checked 属性は、attribute->checked と property->true、false に分かれます。
チェックボックスの場合、checked="checked" が定義されていない場合、alert($.attr("checked")) の結果は不定になります。定義されている場合、結果がチェックされます。チェックボックスのステータスが変化しても、属性は変化しません。
prop($.attr("checked")) が使用される場合、出力はそれぞれ false と true になります。変化に応じてプロパティも変化します。
そのため、checked 属性を変更する場合は prop() を使用する必要があります。 prop() は jQuery 1.6 以降に追加されました。
インターネット上の他の同様の物件に関するグラフ:
さらに、IE9 より前のバージョンでは、DOM 要素が削除される前にプロパティが削除されていない場合、.prop() メソッドを使用して DOM 要素のプロパティの値を設定します (単純な型を除く: 数値、文字列、ブール値) ) メモリリークが発生します。 DOM オブジェクトの値を安全に設定し、メモリ リークを回避するために、.data() メソッドを使用できます。 まだ遭遇していないのでここに書いておきます。