มักจะใช้prop()วิธีการเปิดหรือปิดการใช้งานองค์ประกอบเมื่อใช้ jQuery (ดูด้านล่างสำหรับทำไม)
ในกรณีของคุณมันจะเป็น:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
ตัวอย่าง jsFiddle ที่นี่
ทำไมต้องใช้prop()เมื่อคุณสามารถใช้attr()/ removeAttr()เพื่อทำสิ่งนี้?
โดยทั่วไปprop()ควรจะใช้เมื่อได้รับหรือการตั้งค่าคุณสมบัติ (เช่นautoplay, checked, disabledและrequiredหมู่คนอื่น ๆ )
โดยการใช้removeAttr()คุณจะลบdisabledแอตทริบิวต์ออกอย่างสมบูรณ์- ในขณะที่prop()เพียงตั้งค่าบูลีนพื้นฐานของคุณสมบัติเป็นเท็จ
ในขณะที่สิ่งที่คุณต้องการสามารถทำได้โดยใช้attr()/ removeAttr()ไม่ได้หมายความว่าควรจะทำ (และอาจทำให้เกิดพฤติกรรมที่แปลก / มีปัญหาเช่นในกรณีนี้)
สารสกัดต่อไปนี้ (นำมาจากเอกสาร jQuery สำหรับ prop () ) อธิบายจุดเหล่านี้โดยละเอียดยิ่งขึ้น:
"ความแตกต่างระหว่างคุณลักษณะและคุณสมบัติอาจมีความสำคัญในสถานการณ์ที่เฉพาะเจาะจงก่อน jQuery 1.6 .attr()บางครั้งวิธีนำค่าคุณสมบัติเข้ามาในบัญชีเมื่อดึงคุณสมบัติบางอย่างซึ่งอาจก่อให้เกิดพฤติกรรมที่ไม่สอดคล้องกันในขณะที่ jQuery 1.6 .prop()
วิธีให้วิธีการดึงข้อมูลอย่างชัดเจน ค่าคุณสมบัติในขณะที่
.attr()ดึงคุณสมบัติ
"คุณสมบัติโดยทั่วไปส่งผลกระทบต่อสถานะไดนามิกขององค์ประกอบ DOM โดยไม่เปลี่ยนแอตทริบิวต์ HTML ที่เป็นอนุกรมตัวอย่างเช่นvalue
คุณสมบัติขององค์ประกอบอินพุตdisabledคุณสมบัติของอินพุตและปุ่มหรือcheckedคุณสมบัติของช่องทำเครื่องหมาย.prop()วิธีควรใช้เพื่อตั้งค่าdisabledและcheckedแทนที่จะเป็น.attr()
วิธี. .val()วิธีการที่ควรจะใช้สำหรับการรับและการตั้งค่า
value."