最近、プロジェクト開発のニーズに応えて、全選択チェックボックス機能を作成する必要がありました。
おっと、これは非常に単純なことではありませんか? 一般チェックボックスと N 個のサブチェックボックスがあります。一般チェックボックスが選択されると、すべてのサブチェックボックスが選択されます。選択すると、サブチェックボックスは選択されません。
この小さなリクエストを受けて、私は密かにうれしかったです、OK、2分で完了します~~~
私の心は刻々と過ぎていきました。草原の馬の数は徐々に数千万頭まで増えました~~~
一体何が起こっているのでしょうか?
alert($("#checkbox_all").attr("checked"));
常に未定義ですか?
ナニ? ? ?
なぜこのようなことが起こっているのでしょうか? ?ブラウザー、バカなの?次に、テスト用のブラウザを思い切って、Chrome から IE、IE から Firefox に変更します。結果はこんな感じ -_-||
またjqueryが改良されたからでしょうか? ? ? ?
Ben Diaosi がハッブル望遠鏡と高精細レーザー電子顕微鏡を使って確認した結果、ついに手がかりが見つかりました。 。 。 。
これは jquery バージョン 1.6 で変更されたことが判明しました:
[checked 属性はページの初期化時に初期化されており、ステータスによって変化しません。
つまり、ページのロード後にチェックボックスが選択されている場合、戻り値は常にチェックされます (私の場合は最初は選択されていませんでした)
時点で選択されていない場合最初は、常に未定義の値が返されます。 ]
jquery がこれに変更を加えたので、対応するより良い解決策が必要です:
.prop() はこの問題を解決する強力なツールです。
具体的な使用法は次のとおりです:
alert($("#checkbox_all").prop("checked"));
は次の時点で true になります。今回は、または false~~
したがって、このディアオシのコードは次のように変更されました:
#check_all はすべての選択の合計チェックボックス、#check_children はサブチェックボックスです。チェックボックス