现在的位置: 首页 > 综合 > 正文

jquery attr和prop的区别

2014年08月29日 ⁄ 综合 ⁄ 共 1095字 ⁄ 字号 评论关闭

    今天在使用jquery.dualListBox的时候遇到了兼容性问题,在firefox浏览器中双击选择到右边的选项无法表单提交,后来看了下 jQuery.dualListBox-1.3.js源码,知道了问题的所在:

$('#' + settings[index].box2View).children('option').attr('selected', 'selected');

jquery1.6以上这句没起到作用, 把attr改成prop就行了.

下面来了说下 attr 和 prop 的区别:(转自:http://www.candoudou.com/archives/161)

        jquery1.6中新加了一个方法prop(),一直没用过它,官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。

官方例举的例子感觉和attr()差不多,也不知道有什么区别,既然有了prop()这个新方法,不可能没用吧,那什么时候该用attr(),什么时候该用prop()呢?

        大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。

jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。

那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();

项目中jquery升级的时候大家要注意这点!

以下是官方建议attr(),prop()的使用:

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() )  

抱歉!评论已关闭.