jquery中attr()和prop()的区别

转载 (原文地址) J_web 随笔 jquery 129阅读 2019-01-05 10:36:19 举报

attr() -> attributes:属性 (例如:href class type等,同时也包含自定义属性 data-value data-img 等)
prop() -> properties: 属性,特性(例如:href class type等,这些属性就是元素本身就带有的属性,也是W3C标准里就包含的属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性,或者叫特性)

jquery1.6之前,.attr()方法在取某些 attribute 的值时,会返回 properties 的值,这就导致了结果的不一致。所以从 jQuery 1.6 开始, .prop()方法 方法返回 properties 的值,而 .attr() 方法返回 attributes 的值。

看下面的例子:

可见,prop(),attr()都可以获取固有属性,但是prop()获取不到自定义的属性,而attr()可以,所以

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

比如:

attr("checked")只是获取复选框的初始值,而prop("checked")会因为复选框的状态而改变

确定一个复选框是否被选中,是使用if(prop("checked"))或者以下

if ( elem.checked )
if ( $(elem).is(":checked") )

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复