làm cách nào tôi có thể tìm thấy tất cả các hộp kiểm đã được chọn và không bị vô hiệu hóa?Bộ chọn jquery cho tất cả các hộp kiểm đã chọn không bị tắt
14
A
Trả lời
5
$('input[type="checkbox"]').filter(function() {
return !this.disabled && this.checked;
})
7
25
Giống như vậy:
$("input[type='checkbox']:checked").not(":disabled")...
này tìm lĩnh vực có input
s, với kiểu checkbox
, được kiểm tra, và không bị vô hiệu hóa. Nếu điều này không làm việc, bạn nên sử dụng một kiểm tra thuộc tính:
$("input[type='checkbox']:checked").not("[disabled]")...
Hoặc, như @lonesomeday astutely chỉ ra, bạn có thể kết hợp nó vào một selector:
$("input[type='checkbox']:checked:not(:disabled)")...
tôi đã đặt cùng một bằng chứng-khái niệm in this fiddle.
+5
Không có điểm nào khi sử dụng hai bộ chọn riêng biệt tại đây. Bạn cũng có thể làm 'input [type =" checkbox "]: checked: not ([disabled])'. – lonesomeday
2
Bạn có thể sử dụng selector này ..
$('input[type=checkbox]:checked:not(:disabled)')
Kiểm tra này FIDDLE
0
thế nào về $("input[type='checkbox']:checked:enabled")
?
Có, nhưng mất ': checked' từ bộ chọn và thực hiện chức năng lọc'! This.disabled && this.checked' sẽ cải thiện hiệu suất tuyệt vời . – lonesomeday
tại sao chính xác? Tôi nghĩ rằng công cụ chọn sẽ làm nó nhanh hơn chức năng của tôi. Tuy nhiên nó dễ hiểu hơn, tôi sẽ chỉnh sửa câu trả lời của tôi. – Hoffmann
Bởi vì các trình duyệt không hiểu ': checked', nên jQuery phải tự thực hiện nó, điều này rất chậm. Thêm một kiểm tra boolean thêm là nhanh hơn nhiều. – lonesomeday