attr()与prop()


        在作复选框全选按钮的时候,出现了一个问题,使用语句$.attr('checked',true),将复选框的属性改成被选中,在chrome浏览器中第一次点击有效后面就不行了,IE8却是没有问题。
百度了好久找到缘由是HTML的属性分为attributeproperty,暂且将后者称为特性。
checked属性即分为attribute->checked,和property->true,false。
    对于一个checkbox,若未定义checked="checked",alert($.attr("checked")) 的结果是undefined。若已定义则结果是checked。attribute并不随着checkbox的状态变化而改变。
使用prop($.attr("checked"))的话输出则分别为false和true。property则随其变化而变化。
  因此在修改checked属性时要使用prop()。prop()在jQuery1.6版本后新增。
  网上关于其余相似属性的图表:chrome

  另外关于在IE9以前版本中,若是property没有在DOM元素被移除以前删除,使用.prop()方法设置DOM元素property(简单类型除外:number、string、boolean)的值会致使内存泄露。为了安全的设置DOM对象的值,避免内存泄露,能够使用.data()方法。 目前还没有遇到,先记在这里。浏览器

相关文章
相关标签/搜索