Avatar ·

الفرق بين .prop() و .attr() في jQuery: لماذا تتصرف الخصائص والسمات بشكل مختلف؟

مرحباً بالجميع! أنا مبتدئ في JavaScript و jQuery، ولا أستطيع فهم الفرق بين طريقتي `.prop()` و `.attr()`. قرأت الوثائق، لكن الارتباك لا يزال قائماً. إليك مثال محدد حيرني. لدي checkbox: ```html ``` عندما أحاول الحصول على حالته باستخدام jQuery، أحصل على نتائج مختلفة: ```javascript // الطريقة الأولى console.log($('#myCheckbox').attr('checked')); // يطبع "checked" // الطريقة الثانية console.log($('#myCheckbox').prop('checked')); // يطبع true ``` لماذا يحدث هذا؟ ففي HTML السمة `checked` محددة بوضوح. كنت أتوقع أن تعيد كلتا الطريقتين نفس الشيء. وزاد ارتباكي أكثر عندما حاولت تغيير حالة checkbox ديناميكياً عبر JavaScript: ```javascript $('#myCheckbox').prop('checked', false); console.log($('#myCheckbox').attr('checked')); // ما زالت "checked"! ``` أي أنه حتى بعد إزالة العلامة برمجياً، لا يزال `.attr()` يعيد