jquery中attr和prop的区别

这个问题的核心是理解HTML中的attribute和property的两个概念:

attribute:HTML标签上定义的属性
property:HTML标签对应DOM元素的属性

知道attribute和property的区别后,就容易区分什么时候使用attr,什么时候使用property了。

比如说需要取tagName属性,明显应该使用prop函数,因为在HTML标签中是没有tagName这个属性的。radiobutton和checkbox的checked属性比较特殊,在HTML标签和DOM中都有,但返回不同的值,详细测试结果见下表。

比较奇怪的是value属性,如果用户输入了新的值,使用attr函数获取的还是html标签中的值。

HTML标签

<input id="user_name" checked="checked" name="user_name" type="radio" entity="user"/>
Attribute/Property .attr() .prop()
tagName undefined INPUT
id user_name user_name
checked checked true
自定义属性entity user undefined

总结:尽可能的使用prop函数,除非是取HTML标签中的自定义属性。

Comments are closed.