最近、この映画は、すべて選択されたチェックボックス関数を提供するように設計する必要があります。
ああ、これはとても簡単なことではありませんか? 1つの一般的なチェックボックス、n複数のサブチェックボックス。一般的なチェックボックスが選択されると、すべてのサブチェックボックスが選択されます。一般的なチェックボックスが選択されないと、サブチェックボックスが選択されません。
この小さなリクエストを受け取った後、私は密かに幸せでした。なんて単純な機能だ、OK、それは2分で行われます~~~
時間は1分ごとに過ぎ去り、草原の馬が私の心の中で急いでいます。
これで何が起こっているのですか?
alert($( "#checkbox_all")。attr( "checked"));
常に未定義?
ナニ? ? ?
なぜこれが起こっているのですか? ?あなたはブラウザで愚かですか?次に、クロムからIEまで、IEからFirefoxまで、ブラウザを決定的に変更します。これが結果です-_- ||
jQueryが改善したのでしょうか? ? ? ?
ハッブル望遠鏡およびHDレーザー電子顕微鏡で確認した後、ついに手がかりを見つけました。 。 。 。
これは、jqueryバージョン1.6で変更されていることがわかります。
[チェックされた属性は、ページが初期化されたときに初期化されており、状態の変更とともに変更されません。
つまり、ページのロード後にチェックボックスが選択された場合、返されたものは常にチェックされます(最初から選択しませんでした)
最初に選択されていない場合、返されたものは常に未定義になります! 】
jQueryはこれに変更を加えたので、対応するより良い解決策がなければなりません。
.prop()は、この問題を解決するための武器です!
特定の使用法は次のとおりです。
alert($( "#checkbox_all")。prop( "checked"));
この時点でそれは真または偽になります~~
したがって、このストリームのコードは次のように変更されました。
#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);
});
しかし、私はまだ最初の方法を使用するのがとても好きです。コードが少ないほど、より良い書き込みは少なく、もっとやる!
すべてを選択する問題を解決するのは非常に便利です~~~