2010-06-27 40 views

Trả lời

19
$(function(){ 
    $('#thediv input:checkbox').attr('checked', 'checked'); 
}); 
2

redquare có sẽ làm việc, nhưng đó là một ý tưởng tốt hơn tổng thể sử dụng true/false với những vì đó là cách họ bình thường, dưới đây là một vài ví dụ về lý do tại sao đây là một thói quen có ích để làm theo. Ví dụ:

$('#myDiv :checkbox').attr('checked', 'checked'); 
alert($('#myDiv :checkbox').attr('checked')); //this alerts true, not "checked" 

You can test this here

Thay vào đó, nhận được trong thói quen đi qua một boolean, đó là rất nhiều linh hoạt hơn, ví dụ:

$(function() { 
    $('#myDiv :checkbox').attr('checked', true); 
}); 

này cho phép linh hoạt hơn rất nhiều trong Ví dụ: mã terse hơn, giả sử chúng tôi có hộp kiểm "Chọn tất cả" ở trên cùng, trông như thế nào?

$('#checkAll').change(function() { 
    if(this.checked) { 
    $('#subTable :checkbox').attr('checked', 'checked'); 
    } else { 
    $('#subTable :checkbox').removeAttr('checked', 'checked'); 
    } 
}); 

Bây giờ, chúng tôi đã phải mang một chức năng mới để thực hiện công việc, .removeAttr(). Để công bằng, this is even how the jQuery documentation does it in the example. Tuy nhiên, bạn có thể cắt mà xuống đáng kể nếu bạn tận dụng bình thường jQuery làm trong nội bộ, như thế này:

$('#checkAll').change(function() { 
    $('#subTable :checkbox').attr('checked', this.checked); 
}); 

Đây chỉ là một cái gì đó để giữ trong tâm trí khi bạn mã, quy tắc tương tự appy để .attr('disabled') . Có những khu vực khác mà bình thường cũng xảy ra ... có lẽ sự kiện là rộng nhất trong số họ, nếu bạn tò mò you can see that here, nó đã được thực hiện cho bạn, sử dụng nó :)

+0

Tôi biết tôi là một kỷ lục bị phá vỡ về vấn đề này, nhưng thực sự, những 'tài sản checked' của phần tử checkbox là điều dễ sử dụng nhất và tự nhiên nhất để sử dụng. Tương tự với 'disabled'. –

+0

@Tim - Và những gì đang được sử dụng :) Tuy nhiên * thiết lập * tài sản trên ** nhiều ** yếu tố không dễ dàng được thực hiện một cách ngắn gọn, bạn sẽ phải làm một hướng dẫn '.each()' gọi trong tất cả các mã của bạn cho điều đó. Bạn có thể làm '.checked = true;' trên một bộ sưu tập * * :) –

+0

Tôi biết, tôi biết. Tôi đã làm điều đó trong câu trả lời của tôi. Tuy nhiên, tôi vẫn khuyên bạn nên sử dụng 'each()' và thuộc tính 'checked': bây giờ tồn tại sự lộn xộn không cần thiết trong tâm trí của nhiều nhà phát triển nhờ một hàm' attr() ' các thuộc tính, không phải thuộc tính) và nhiều cách không chắc chắn và quanh co mà mọi người hiện nay khuyên dùng để thiết lập một cờ Boolean đơn giản đã tồn tại và làm việc một cách vui vẻ trong một thập kỷ rưỡi. –

11

Mọi người dường như thực sự bối rối về cách làm điều này trong jQuery. Việc chọn hộp kiểm sẽ dễ dàng hơn và hiệu quả hơn nếu không có hộp kiểm. Sau đây sử dụng sức mạnh của việc lựa chọn và lặp lại trên một danh sách các nút kết hợp với jQuery các couldn't-be-đơn giản hơn DOM checked tài sản của các yếu tố ô trống:

$("#myDiv input:checkbox").each(function() { 
    this.checked = true; 
}); 

Nó không phải quá khó để cắt ra jQuery hoàn toàn trong trường hợp này :

var div = document.getElementById("myDiv"); 
var inputs = div.getElementsByTagName("input"); 
for (var i = 0, len = inputs.length; i < len; ++i) { 
    if (inputs[i].type == "checkbox") { 
     inputs[i].checked = true; 
    } 
} 

CẬP NHẬT

Kể từ khi phát hành jQuery 1.6 và prop(), có một cách lành mạnh để làm điều này trong jQuery:

$("#myDiv input:checkbox").prop("checked", true); 
+0

Tôi biết điều này là cũ nhưng có thể bạn có thể giúp tôi. Tôi có một biểu mẫu, nơi tôi muốn chọn trước tất cả các hộp kiểm trong div, nhưng sau khi biểu mẫu gửi nó sẽ hiển thị các hộp đã chọn (người dùng có thể bỏ chọn hộp và bây giờ tất cả các hộp kiểm tra lại), – alex

0

Đây là công việc trong firefox v.17.01. Chưa thử nghiệm trên các trình duyệt khác.

// Chọn và Kiểm tra hộp kiểm trên tải

$('#enable, #enable1, #enable2, #enable3').attr('checked', 'checked'); 

Xem ví dụ:

JS FIDDLE

Các vấn đề liên quan