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")。 |
不出意外的话,第二项变更将会影响到现有打算升级到1.6的那些项目。
这一版本是在1.5发布后3个月及1.5.2发布后1个月推出的。目前1.7的工作已经开始了,jQuery团队已经接受了功能建议书。