ホームページ >ウェブフロントエンド >jsチュートリアル >チェックボックスのattr(チェック済み)が常にunknown_jqueryになる問題を解決

チェックボックスのattr(チェック済み)が常にunknown_jqueryになる問題を解決

WBOY
WBOYオリジナル
2016-05-16 16:44:171232ブラウズ

最近、プロジェクト開発のニーズに応えて、全選択チェックボックス機能を作成する必要がありました。

おっと、これは非常に単純なことではありませんか? 一般チェックボックスと 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 はサブチェックボックスです。チェックボックス

コードをコピー コードは次のとおりです:

$("#check_all")。 change(function(){
$('.check_children').prop("checked",this.checked);
});

または:
コードをコピー コードは次のとおりです:

$("#check_all").change(function(){
var is_checked = $(this) .prop("checked");
$('.check_children').prop("checked",is_checked);

しかし、私はまだそれを使用するのが好きです。最初の方法は、コードが少ないほど良いです~~書く量を減らし、より多くのことを実行してください!

すべてを選択する問題を解決するのは非常に便利です~~~
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。