Avatar ·

Diferencia entre .prop() y .attr() en jQuery: ¿por qué propiedades y atributos se comportan de manera diferente?

¡Hola a todos! Soy nuevo en JavaScript y jQuery, y no puedo entender la diferencia entre los métodos `.prop()` y `.attr()`. Leí la documentación, pero la confusión persiste. Aquí hay un ejemplo concreto que me dejó perplejo. Tengo un checkbox: ```html ``` Cuando intento obtener su estado con jQuery, obtengo resultados diferentes: ```javascript // Primera forma console.log($('#myCheckbox').attr('checked')); // Devuelve "checked" // Segunda forma console.log($('#myCheckbox').prop('checked')); // Devuelve true ``` ¿Por qué sucede esto? En el HTML el attribute `checked` está explícitamente indicado. Esperaba que ambos métodos devolvieran lo mismo. Me confundí aún más cuando intenté cambiar dinámicamente el estado del checkbox mediante JavaScript: ```javascript $('#myCheckbox').prop('checked', false); console.log($('#myCheckbox').attr('checked')); // ¡Sigue siendo "checked"! ``` Es decir, incluso después de desmarcar la casilla programáticamente, `.attr()` todavía...