2012-09-03 144 views
0

學生的GridView有一個檢查頂部所有複選框,它控制開/關的複選框。我想在學生網格視圖中打開和關閉複選框。這裏是我的代碼:jQuery的切換複選框

$(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工作,但今天我升級到1.8.1的JQuery,它不再起作用。我需要什麼才能讓它再次運作?

+1

使用''而不是.prop()'.attr()嘗試' – AdityaParab

+0

一些疑惑...你要檢查* *全部**這些框,或者你只是想反轉選擇? – AdityaParab

+0

嘗試使用'.attr()'和'ATTR( 「選中」,假);' –

回答

0

這是你應該需要:

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

現場示例:http://jsfiddle.net/3ZfzS/

但是,爲了使這更intuative,你應該取消「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/

0

根據您的選擇,它看起來像你使用的checkboxes都相同ID

要麼給不同ID或改用class選擇。

0

此行返回true或false,而不是 「選中」,猜猜這是什麼原因

$(this).prop("checked") 

檢查/取消

$(this).prop("checked",true) //check 
$(this).prop("checked",false) //uncheck