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` 属性。我本以为两个方法会返回相同的结果。 更让我困惑的是,当我尝试通过 JavaScript 动态改变 checkbox 的状态时: ```javascript $('#myCheckbox').prop('checked', false); console.log($('#myCheckbox').attr('checked')); // 仍然是 "checked"! ``` 也就是说,即使我通过编程取消了勾选,`.attr()` 仍然返回