Luôn sử dụng prop()
phương thức để bật hoặc tắt các thành phần khi sử dụng jQuery (xem bên dưới để biết lý do).
Trong trường hợp của bạn, nó sẽ là:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
ví dụ jsFiddle ở đây.
Tại sao sử dụng prop()
khi bạn có thể sử dụng attr()
/ removeAttr()
để làm điều này?
Về cơ bản, prop()
nên được sử dụng khi nhận hoặc thiết lập các thuộc tính (ví dụ như autoplay
, checked
, disabled
và required
giữa những người khác).
Bằng cách sử dụng removeAttr()
, bạn đang loại bỏ hoàn toàn disabled
chính thuộc tính - trong khi prop()
chỉ đơn thuần là đặt giá trị boolean bên dưới của thuộc tính thành false.
Mặc dù những gì bạn muốn làm có thể được thực hiện bằng cách sử dụng attr()
/ removeAttr()
, nhưng điều đó không có nghĩa là nó nên được thực hiện (và có thể gây ra hành vi lạ / có vấn đề, như trong trường hợp này).
Các trích xuất sau (lấy từ tài liệu jQuery cho prop () ) giải thích các điểm này chi tiết hơn:
"Sự khác biệt giữa các 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 khi jQuery 1.6, .attr()
phương thức đôi khi tính đến các giá trị thuộc tính khi truy xuất một số thuộc tính, có thể gây ra hành vi không nhất quán. Đối với jQuery 1.6, .prop()
phương thức cung cấp một cách để truy xuất rõ ràng giá trị .attr()
thuộc tính , trong khi
lấy các thuộc tính. "
"Các thuộc tính thường ảnh hưởng đến trạng thái động của thành phần DOM mà không thay đổi thuộc tính HTML được tuần tự hóa. Ví dụ bao gồm thuộc value
tính của các thành phần đầu vào, thuộc disabled
tính của đầu vào và nút hoặc thuộc checked
tính của hộp kiểm. .prop()
Phương thức này nên được sử dụng để đặt disabled
và checked
thay vì các .attr()
phương pháp. các .val()
phương pháp nên được sử dụng để nhận và thiết lập
value
".