转 在jQuery 1.6.1中什么构成属性(Attribute)或属性(Property)
jQuery 1.6.1 RC1今天已经发布,帮助解决.Attr()向后兼容的问题连同其他一些修正。
jQuery.com发布一个不错的图表,.attr()和.prop()应该被用于今后的jQuery 1.6+。
我想我公布这个供以后参考。请注意,所有的属性仍然可以通过1.6.1访问,但不一定能通过1.6。
据jQuery.com说.prop()方法应该被用于布尔属性(Attribute)/属性(Property)和在HTML中不存在的属性(如window.location的)。全部的其他属性(那些你可以在HTML中看到的)可以而且应该继续使用.attr()方法控制。
jQuery.com发布一个不错的图表,.attr()和.prop()应该被用于今后的jQuery 1.6+。
我想我公布这个供以后参考。请注意,所有的属性仍然可以通过1.6.1访问,但不一定能通过1.6。
据jQuery.com说.prop()方法应该被用于布尔属性(Attribute)/属性(Property)和在HTML中不存在的属性(如window.location的)。全部的其他属性(那些你可以在HTML中看到的)可以而且应该继续使用.attr()方法控制。
ATTRIBUTE | PROPERTY |
accesskey | async |
align | autofocus |
class | checked |
contenteditable | location |
draggable | multiple |
href | readOnly |
id | selected |
label | |
rel | |
src | |
tabindex | |
title | |
type | |
width |
jQuery 1.6刚刚发布了,有几处性能和跨浏览器兼容性的改进,专门重写了属性模块。
新版本中的部分重要改进:
-
在attr()方法中支持Boolean属性;
-
添加了钩子函数,允许对attr()和val()方法进行扩展;
-
map()方法添加了对对象的支持(将JavaScript对象的属性映射到函数)
-
允许使用相对值(“+=”,“-=”)更新CSS;
-
添加了deferred.always(), deferred.pipe()方法,减少了代码量,提高了代码易读性;
-
同步动画 – 现在所有动画都同步到相同的时间间隔. 使用新的浏览器功能,动画也更顺畅;
所有这些新特性连同整个bug修复列表在官方博文中都有详细说明。
不幸的是,其中包含了部分破坏性的变更,团队已经在官方更新中用单独的章节强调了它们:
变更 | jQuery 1.5.2 示例 | jQuery 1.6 示例 |
data()方法使用破折号创建驼峰格式。 |
data-max-value="15" 创建{ max-value: 15 } | data-max-value="15" 创建{ maxValue: 15 } |
区分了Property与Attribute。attr()方法现在不能用于获取preperty的值。为了处理property的值,引入了prop()和removeProp()方法。 | 如果复选框被选中,checkbox.attr("checked")返回(true) |
checkbox.attr("checked")返回空字符串。 要判别是否选中,需在事件处理程序中使用 $(this).prop("checked")或 $(this).is(":checked")。 |