1. 程式人生 > >jquery attr()方法獲取input的checked屬性問題

jquery attr()方法獲取input的checked屬性問題

問題:經常使用jQuery外掛的attr方法獲取checked屬性值,獲取的值的大小為未定義,此時可以用prop方法獲取其真實值,下面介紹這兩種方法的區別:

1.通過prop方法獲取checked屬性,獲取的checked返回值為boolean,選中為true,否則為flase

<input type="checkbox" id="selectAll" onclick="checkAll()">全選 
function checkAll() 
{ 
var checkedOfAll=$("#selectAll").prop("checked"); 
alert(checkedOfAll); 
$("input[name='procheck']").prop("checked", checkedOfAll); 
} 


2.如果使用attr方法獲取時,如果當前input中初始化未定義checked屬性,則不管當前是否選中,$("#selectAll").attr("checked")都會返回undefined;

<input type="checkbox" id="selectAll" onclick="checkAll()" >全選 


如果當前input中初始化已定義checked屬性,則不管是否選中,$("#selectAll").attr("checked")都會返回checked.

<input type="checkbox" id="selectAll" onclick="checkAll()" checked>全選 
function checkAll() 
{ 
var checkedOfAll=$("#selectAll").attr("checked"); 
alert(checkedOfAll); 
$("input[name='procheck']").attr("checked", checkedOfAll); 
} 


總結,如果使用jquery,應使用prop方法來獲取和設定checked屬性,不應使用attr

簡單的全選和取消全選

//全選單選框
function CheckAll(obj) {
    if ($(obj).prop("checked")) {
        $("#act_list input:checkbox").each(function () {
            $(this).prop("checked", true);
        });
    }
    else {
        $("#act_list input:checkbox").each(function () {
            $(this).prop("checked", false);
        });
    }
}