Với sự ra đời của phương thức prop, bây giờ tôi cần biết cách bỏ chọn hộp kiểm được chấp nhận. Là nó:
$('input').filter(':checkbox').removeAttr('checked');
hoặc là
$('input').filter(':checkbox').prop('checked',false);
Với sự ra đời của phương thức prop, bây giờ tôi cần biết cách bỏ chọn hộp kiểm được chấp nhận. Là nó:
$('input').filter(':checkbox').removeAttr('checked');
hoặc là
$('input').filter(':checkbox').prop('checked',false);
Câu trả lời:
jQuery 3
Tính đến jQuery 3, removeAttr
không không thiết lập thuộc tính tương ứng với false
nữa:
Trước jQuery 3.0, sử dụng
.removeAttr()
trên một thuộc tính boolean nhưchecked
,selected
hoặcreadonly
cũng có thể thiết lập tương ứng với tên tài sản chofalse
. Hành vi này là bắt buộc đối với các phiên bản cũ của Internet Explorer nhưng không đúng đối với các trình duyệt hiện đại vì thuộc tính đại diện cho giá trị ban đầu và thuộc tính đại diện cho giá trị hiện tại (động).Hầu như luôn luôn là một sai lầm khi sử dụng
.removeAttr( "checked" )
trên phần tử DOM. Lần duy nhất nó có thể hữu ích là nếu sau này DOM sẽ được tuần tự hóa trở lại chuỗi HTML. Trong tất cả các trường hợp khác,.prop( "checked", false )
nên được sử dụng thay thế.
Do đó chỉ .prop('checked',false)
là cách đúng khi sử dụng phiên bản này.
Câu trả lời gốc (từ năm 2011):
Đối với các thuộc tính có thuộc tính boolean cơ bản (trong đó checked
là một), hãy removeAttr
tự động đặt thuộc tính cơ bản thành false
. (Lưu ý rằng đây là một trong số các "bản sửa lỗi" tương thích ngược được thêm vào jQuery 1.6.1).
Vì vậy, một trong hai sẽ hoạt động ... nhưng ví dụ thứ hai bạn đưa ra (sử dụng prop
) là chính xác hơn trong hai. Nếu mục tiêu của bạn là bỏ chọn hộp kiểm, bạn thực sự muốn ảnh hưởng đến thuộc tính chứ không phải thuộc tính và không cần phải removeAttr
thực hiện điều đó.
removeProp()
] để xóa các thuộc tính gốc như đã chọn, đã tắt hoặc đã chọn. Thao tác này sẽ xóa hoàn toàn thuộc tính và sau khi xóa, không thể thêm lại vào phần tử. Sử dụng .prop()
để đặt các thuộc tính này thành false thay thế." removeProp
thực sự chỉ nhằm mục đích sử dụng với các thuộc tính tùy chỉnh.
sử dụng checked
: thuộc tính true, false của hộp kiểm.
jQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
Tôi khuyên bạn nên sử dụng cả hai, prop và attr vì tôi gặp sự cố với Chrome và tôi đã giải quyết nó bằng cả hai chức năng.
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
$("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
Một cách khác để làm điều tương tự là lọc theo thuộc tính type = checkbox :
$('input[type="checkbox"]').removeAttr('checked');
hoặc là
$('input[type="checkbox"]').prop('checked' , false);
Hãy nhớ rằng Sự khác biệt giữa thuộc tính và thuộc tính có thể quan trọng trong các tình huống cụ thể. Trước jQuery 1.6 , phương thức .attr () đôi khi đã tính đến các giá trị thuộc tính khi truy xuất một số thuộc tính, điều này có thể gây ra hành vi không nhất quán. Kể từ jQuery 1.6, phương thức .prop () cung cấp một cách để truy xuất các giá trị thuộc tính một cách rõ ràng, trong khi .attr () truy xuất các thuộc tính.
Biết thêm ...