0

生徒のグリッドビューには、上部に [すべてチェック] チェックボックスがあり、チェックボックスのオン/オフを制御します。生徒のグリッド ビューでチェックボックスのオンとオフを切り替えたい。これが私のコードです:

$(document).ready(function () {
    $("#chkAll").click(function () {
        if ($(this).prop("checked") == "checked") {
            $("#<%= gvStudents.ClientID %> :checkbox").not(this).prop("checked", "checked");
        }
        else {
            $("#<%= gvStudents.ClientID %> :checkbox").not(this).prop("checked", "false");
        }    
    });    
});

以前は jQuery 1.4.xx で動作していましたが、今日 JQuery 1.8.1 にアップグレードしたところ動作しなくなりました。再び機能させるには何が必要ですか?

4

3 に答える 3

0

セレクターに基づいて、ID両方に同じものを使用しているように見えますcheckboxes

別のものを指定するか、代わりIDにセレクターを使用してください。class

于 2012-09-03T11:10:35.777 に答える
0

この行は true または false を返しますが、「チェック済み」ではありません。これが理由だと思います

$(this).prop("checked")

チェック/チェックを外す

$(this).prop("checked",true)  //check
$(this).prop("checked",false) //uncheck
于 2012-09-03T11:30:55.633 に答える
0

必要なのはこれだけです:

$("#chkAll").click(function () {
    var checkAll = $(this).prop("checked");
    $("#<%= gvStudents.ClientID %> :checkbox").not(this).prop("checked", checkAll);
});   

実際の例: http://jsfiddle.net/3ZfzS/

しかし、これをより直感的にするために、他のチェックボックスが 1 つ以上オフになっている場合は、おそらく「checkAll」チェックボックスをオフにする必要があります。これは、次の追加で実行できます。

$("#<%= gvStudents.ClientID %> :checkbox").not('#chkAll').click(function(){
    var total = $("#<%= gvStudents.ClientID %> :checkbox").not('#chkAll').size();
    var checked = $("#<%= gvStudents.ClientID %> :checkbox").not('#chkAll').filter(':checked').size();
    $("#chkAll").prop("checked",total == checked);
});

実際の例: http://jsfiddle.net/xV2ej/

于 2012-09-03T11:37:15.630 に答える