jQuery1.6以上attr改用prop

Posted xuqiushuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery1.6以上attr改用prop相关的知识,希望对你有一定的参考价值。

jQuery1.6以上,attr改用prop

//设置选中
$(‘#cb‘).attr(‘checked‘,true);
</script>
这样写在Jquery1.6之前完全没问题,升级1.6到更高的版本时会发现:
$(‘#cb‘).attr(‘checked‘); 返回的是checked或者是undefined,不是原来的true和false了。 并且checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined

<input type=‘checkbox‘ id=‘cb‘/>
<script>
//获取是否选中
var isChecked = $(‘#cb‘).prop(‘checked‘);
//或
var isChecked = $(‘#cb‘).is(":checked");
//设置选中
$(‘#cb‘).prop(‘checked‘,true);
</script>

原因是:
它将“属性”与“特性”做了区别,属性指的是“name,id”等等,特性指的是“selectedIndex, tagName, nodeName”等等。
Jquery1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性
$("#cb").attr("tagName"); //undefined
$("#cb").prop("tagName"); //INPUT
那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
项目中jquery升级的时候大要注意这点!
根据官方建议attr(),prop()的使用:
分析了其中的原因,可以这样理解:
它将“属性”与“特性”做了区别,属性指的是“name,id”等等,特性指的是“selectedIndex, tagName, nodeName”等等。
JQ1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性。

以上是关于jQuery1.6以上attr改用prop的主要内容,如果未能解决你的问题,请参考以下文章

jquery1.6中的.prop()和.attr()异同

attr('defaultValue') 使用 jQuery 1.6.3 返回 undefined

prop()和attr()

jquery attr与prop的区别

关于Jquery获取和设置属性的两个方法prop()/attr()的区别。

.prop() 与 .attr()