在jQuery中,property和attribute是两个不同的概念,主要区别体现在操作对象、应用版本和数据类型上。
操作对象不同
attribute:操作的是HTML标签属性(如
id、class等),属于文档节点的属性。property:操作的是DOM对象的属性(如
checked、value等),属于JavaScript对象的属性。
例如,对于<input type="checkbox" checked>:checked是HTML的attribute,对应DOM的defaultChecked属性。直接通过
prop()获取的checked是DOM的property,反映当前状态。
应用版本不同
attr()是jQuery 1.0版本就有的方法^^。prop()是jQuery 1.6版本新增的方法,用于更准确地操作DOM属性^^。
数据类型限制
attr()设置的值只能是字符串,非字符串类型会调用toString()转换^^。prop()设置的值可以是任意类型(如布尔值、对象等)^^。
典型场景
操作自定义属性(如
data-*)或HTML标准属性(如href、title)时,优先用attr()。操作表单元素的当前状态(如
checked、selected)时,用prop()。
总结:attribute是HTML标签的静态属性,property是DOM对象的动态属性。jQuery中根据需求选择对应方法,避免混淆。