Tag标签 | 收藏本站 | 设为首页 | 参考书籍 | web前端技术交流①群:WEB前端技术交流群 会员登录 | 会员注册

首页文字描述

会员投稿 RSS订阅 专注web前端: 要么读书、要么旅行,身体和精神必须要有一个在路上。【每天一小步,成功一大步】
搜索: 您的位置主页 > WEB前端 > Jquery/JS > jQuery中prop()与attr()操作属性的区别
隐藏/显示侧边栏

jQuery中prop()与attr()操作属性的区别

2013-12-16 13:39    来源:未知    责任编辑:admin    字号【
.prop()

1、.prop( propertyName ) 获取匹配集合中第一个元素的Property的值
2、
.prop( propertyName, value )
.prop( map )
.prop( propertyName, function(index, oldPropertyValue) )
给匹配元素集合设定一个或多个属性

prop()还是attr() ?


从JQuery1.6版开始,新增了prop方法来获取和设置JQuery对象的属性,这里的prop方法和attr方法究竟有什么区别呢?

要弄懂这个问题,我们首先要区别property和attribute两个概念。property主要是针对DOM对象的,而attribute主要是针对HTML标签的。这样对prop和attr这两个方法来说,它们的区别主要在如下几个方面:

1.我们知道对于checkbox这个DOM对象来说,它必然有个选择状态,且它的选择状态只有两种,要么是选中状态,要么是非选中状态,所以不管什么时候我们用prop方法获取其checked值,都能获得一个确定的值,true或false,而对于checkbox的HTML表示来说,它可以简单的表示为<input type="checkbox"/>,这里你可以不用对checked属性赋值,这时,在用attr获取checked值时,其值将是undefined.

2.对于某些HTML标签属性,在DOM对象中将对应不同的属性名,比如<li class="highlight">,其attribute名是class,但是其property名却是className.

3.用prop赋值将是针对其当前的状态赋值,而对于某些属性,attr则是赋予一个初始值。这样prop将永远能动态的改变checkbox的状态,而对某些浏览器来说,attr只能在checkbox被显示在页面上之前改变checked的初始状态,而之后则再也无法改变checked的状态。而且prop能永远获得checkbox的当前状态,而不管checkbox的当前状态如何,attr只能获得初始状态。

4.内置的DOM property不能被移出,而attribute可以。

操作属性 ?

1.prop(name|name,value|name,function(index,oldprop))

2.attr(name|name,value|name,function(index,oldprop))

注意:尽量不要使用prop定义复杂的非内置的属性。当获取属性值时,prop和attr都只能获取对象集内第一个元素的属性。

3.removeProp(name)

4.removeAttr(name)

注意,尽量不要使用属性移除操作,而应该修改属性值

总结:

properties就是浏览器用来记录当前值的东西。正常情况下,properties反映它们相应的attributes(如果存在的话)。但这并不是boolean attriubutes的情况。当用户点击一个checkbox元素或选中一个select元素的一个option时,boolean properties保持最新。但相应的boolean attributes是不一样的,正如上面所述,它们仅被浏览器用来保存初始值。

.attr()和.prop()都不应该被用来取值/设值。使用.val()方法代替(即使使用.attr("value","somevalue") 可以继续运行,就像1.6之前做的那样)

.prop()方法应该被用来处理boolean attributes/properties以及在html(比如:window.location)中不存在的properties。其他所有的attributes(在html中你看到的那些)可以而且应该继续使用.attr()方法来进行操作。


更多
Tags 标签: jQuery操作属性
责任编辑:admin
设为首页 | 加入收藏 | 关于我们| 版权声明 | 在线留言 | 网站地图 |