2014-07-16 17 views
8

Tôi đang sử dụng jquery 1.11.1 và đây là mã của tôi:jquery đặt tất cả các hộp kiểm kiểm tra

$("#rowchkall").change(function(){ 
    if($(this).is(':checked')){ 
     $("input:checkbox[class=rowchk]").each(function() { 
      alert("set checked"); 
      $(this).attr('checked', "checked"); 
     }); 
    }else{ 
     $("input:checkbox[class=rowchk]").each(function() { 
      $(this).attr('checked', false); 
     }); 
    } 
}); 

Khi tôi lần đầu tiên bấm vào #rowchkall, tất cả các hộp kiểm được thiết lập để kiểm tra. Khi tôi nhấp lại vào nó, tất cả hộp kiểm sẽ được bỏ chọn.

Khi tôi nhấp lại vào nó, hộp cảnh báo vẫn xuất hiện nhưng không có hộp kiểm nào được chọn. Tại sao nó chỉ hoạt động lần đầu tiên? Làm thế nào tôi có thể sửa chữa nó?

Cảm ơn bạn.

Trả lời

17

Sử dụng .prop() thay vì .attr()

$(this).prop('checked', true); //true to check else false uncheck 

Mã của bạn có thể được đơn giản hóa như

$("#rowchkall").change(function() { 
    $("input:checkbox.rowchk").prop('checked',this.checked); 
}); 

A Good đọc .prop() vs .attr()

+1

+1 để liên kết với tài liệu và hiển thị ví dụ cho đối số thứ 2 là boolean – jmort253

+0

Cảm ơn rất nhiều câu trả lời của bạn. Trong ví dụ của bạn, tại sao không chỉ trực tiếp đặt nó là 'true' hoặc' false'? Lợi ích của việc sử dụng 'this.checked' là gì? – user1995781

+0

Tôi nghĩ rằng điều này có thể được sửa đổi thành '$ (". Rowchk ")' vì thuộc tính 'checked' chỉ dành cho hộp kiểm .. –

4

Cố gắng sử dụng .prop() thay vì .attr()

$("#rowchkall").change(function(){ 
    $("input:checkbox[class=rowchk]").prop('checked', this.checked); 
}); 

Và bạn không cần phải iterate trên tất cả các yếu tố để thay đổi thuộc tính của nó.

1
$("#rowchkall").change(function(){ 
    if($(this).is(':checked')){ 
     $("input.rowchk[type=checkbox]").each(function() { 
      alert("set checked"); 
      $(this).attr('checked',true); 
     }); 
    }else{ 
     $("input.rowchk[type=checkbox]").each(function() { 
      $(this).attr('checked', false); 
     }); 
    } 
}); 
Các vấn đề liên quan