jQuery中的attr()和prop()两种方法,都是用来获取/设置 attributes 和properties的值的,其中,prop() 是从jQuery 1.6 开始新增的一个方法。既然两种方法的作用一样,为何还要新增一个方法呢?那是因为用 attr() 获取或设置属性的值的时候,会出现不一致的行为。
根据官方的建议:具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()。
例如:checked属性即分为attribute->checked,和property->true,false。
对于一个checkbox,若未定义checked="checked",alert($.attr("checked")) 的结果是undefined。若已定义则结果是checked。attribute并不随着checkbox的状态变化而改变。
使用prop($.attr("checked"))的话输出则分别为false和true。property则随其变化而变化。
所以在修改checked属性时要使用prop()。