您的位置:首页 > Web前端 > JQuery

Jquery 1.6+ .prop()与.attr()方法比较

2012-03-26 14:38 211 查看
今天在用JQuery的时候发现一个问题用.attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined.

$("#category_professional").click(function(){
    if($("#category_professional").prop("checked")==true)//如果选中专业类,下面则可用
	{
	 $("#source4,#target4,#source5,#target5,#source6,#target6").removeAttr("readonly");
	 $("#source4,#target4,#source5,#target5,#source6,#target6").attr("suggesturl","GetTranslatorlist.ashx");
	   $("#source4,#target4").attr("class","required textInput valid");//如果选择了则第一个为必填
	}else
	{
	
     $("#source4,#target4,#source5,#target5,#source6,#target6").attr("readonly","readonly");
	  $("#source4,#target4,#source5,#target5,#source6,#target6").attr("suggesturl","");
	  
	}

})


解决这个文章我参考了这个帖子:

http://bugs.jquery.com/ticket/9812

为什么jquery 1.6+增加了.prop()方法,因为在有些浏览器中比如说只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked"。所以,从1.6开始,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[b]√[/b]
async[b]√[/b][b]√[/b]
autofocus[b]√[/b][b]√[/b]
checked[b]√[/b][b]√[/b]
class[b]√[/b]
contenteditable[b]√[/b]
draggable[b]√[/b]
href[b]√[/b]
id[b]√[/b]
label[b]√[/b]
location ( i.e. window.location )[b]√[/b][b]√[/b]
multiple[b]√[/b][b]√[/b]
readOnly[b]√[/b][b]√[/b]
rel[b]√[/b]
selected[b]√[/b]
src[b]√[/b]
tabindex[b]√[/b]
title[b]√[/b]
type[b]√[/b]
width ( if needed over
.width()
)
[b]√[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: