jQuery中prop()与attr()方法的区别及正确使用场景
本文解析jQuery 1.6新增的prop()方法与attr()方法的区别。attr()返回字符串值如"checked"或undefined,而prop()统一返回布尔值true或false。文章明确了使用建议:针对布尔属性如checked、disabled应使用prop(),其他常规属性使用attr(),并提供了官方对照表供参考。
prop()方法的引入背景
jQuery 1.6版本引入了prop()方法,此前该功能鲜少被使用。官方文档对其描述仅有一句:获取匹配元素集中第一个元素的属性值。
浏览器属性书写差异
在不同浏览器中,HTML属性的书写规范存在差异。部分浏览器允许简写如disabled、checked,而另一些则要求完整形式如disabled="disabled"、checked="checked"。例如,使用attr("checked")获取复选框状态时,选中状态下返回值为"checked",未选中时则返回undefined。
prop()对布尔值的统一处理
为解决上述不一致问题,jQuery提供了prop()方法。该方法能统一返回布尔值:选中时返回true,未选中时返回false,从而避免了attr()方法返回字符串或undefined的混乱情况。
attr()与prop()的使用场景指南
关于attr()与prop()的选择时机,官方建议如下:1. 若添加属性名即生效,应使用prop();2. 涉及true/false两个状态的布尔属性,应使用prop();3. 其他情况使用attr()。在升级项目中的jQuery版本时,需特别注意这一差异。
以下是官方推荐的attr()与prop()使用对照表,详细列出了各类HTML特性对应的推荐方法。
官方属性对照表解析
| Attribute/Property | .attr() |
.prop() |
|---|---|---|
| accesskey | √ | |
| align | √ | |
| async | √ | √ |
| autofocus | √ | √ |
| checked | √ | √ |
| class | √ | |
| contenteditable | √ | |
| draggable | √ | |
| href | √ | |
| id | √ | |
| label | √ | |
| location ( i.e. window.location ) | √ | √ |
| multiple | √ | √ |
| readOnly | √ | √ |
| rel | √ | |
| selected | √ | √ |
| src | √ | |
| tabindex | √ | |
| title | √ | |
| type | √ | |
width ( if needed over .width() ) |
√ |
JavaScript零基础入门:从环境搭建到运行第一段代码
2026-11-05 15:29:58
HTML链接中javascript:void(0)的作用及现代替代方案
2026-11-05 10:07:47
在线调试 JS 时怎么引入 jQuery 或 Vue 等第三方库
2026-11-05 08:53:56
原生JavaScript实现简易颜色选择器原理与代码
2026-11-03 23:22:19
JS原生表单序列化:FormData与URLSearchParams用法详解
2026-11-03 23:13:21
