jquery 1.7 更新说明 中文

据jQuery官方博客11月3日的最新消息,jQuery 1.7 正式版已经可以下载使用具体更新如下, 翻译自jquery官方博客:http://blog.jquery.com

 

 

jQuery 1.7 cdn服务器如下

 

·        http://code.jquery.com/jquery-1.7.js

 

·        http://code.jquery.com/jquery-1.7.min.js

 

新的版本将在1-2天内部署到microsoft和google的cdn服务器上

 

在反复的测试和修复下, 我们相信已经完成了一个较为稳定的版本. 

 

1.7 更新内容

 

API 网站上的 Version 1.7tag 是了解新功能的最佳方式. 以下列出的是1.7中作出较大改变或在文档中尚未提及的内容.

 

新的API: .on() and .off()

 

新的 .on() 和 .off() 接口囊括的了所有的事件绑定方式,  更加易于书写

 

$(elements).on( events [, selector] [, data] , handler );

 

$(elements).off( [ events ] [, selector] [, handler] );

 

.on()和.delegate()非常相似, 将为使用选择器筛选出来的对象绑定事件. 当没有提供selector或selector为null的时候.on()就跟.bind()相似. 有一点需要注意:如果data变量是一个字符串, 则一定要指定selector或将selector设为null,来防止jquery将data变量误解为选择器. 推荐使用object,作为data变量.

 

1.7 以前版本中的事件绑定还可以使用,但推荐在新的项目里使用.on()以适应日后的发展.

 

以下是一些新旧api的使用比较:

 

$('a').bind('click', myHandler);

 

$('a').on('click', myHandler);

 

 

 

$('form').bind('submit', { val: 42 }, fn);

 

$('form').on('submit', { val: 42 }, fn);

 

 

 

$(window).unbind('scroll.myPlugin');

 

$(window).off('scroll.myPlugin');

 

 

 

$('.comment').delegate('a.add', 'click',addNew);

 

$('.comment').on('click', 'a.add', addNew);

 

 

 

$('.dialog').undelegate('a','click.myDlg');

 

$('.dialog').off('click.myDlg', 'a');

 

 

 

$('a').live('click', fn);

 

$(document).on('click', 'a', fn);

 

 

 

$('a').die('click');

 

$(document).off('click', 'a');

 

提高了委派事件的性能

 

随着网页越来越大也越来越封复杂, 事件委派也变得越来越重要. 像Backbone, JavaScriptMVC, 和Sproutcore 框架,用了大量的事件委派. 考虑到这些, jquery 1.7 进行了相应的重构, 使得很多委派事件速度更快, 尤其是一些常用的.

 

为了优化最的常用的selector形式, 我们从google codesearch 作了调查. 在.live()和.delegate()方法中大约2/3的选择器形式为tag#id.class--使用了一个或多个tag,id,class      在时间被绑定时解析这些简单的选择器, 通过这种方式,在选择器相关的事件分发上,我们甚至可以超越浏览器本地代码.其他更加复杂的选择器我们依然使用Sizzle 引擎, 所有现在的代码都可以继续使用

 

最终 , 关于事件委派的测试报告表明,1.7比1.6.4要快一半以上.

 

                              ?

 

在IE6/IE7/IE8中更好地支持HTML5

 

任何在IE6/7/8中使用过html5标签诸如section都会遇到问题, 因为这些浏览器实际会将标签从document中移除. 在1.7版中, 在诸如.html()的函数帮助下,旧本版IE可以支持HTML5.这种支持和之前的 innerShiv 相似.你还是必须在头部引入 html5shiv (or Modernizr)  更多支持: The Story of the HTML5 Shiv.

 

toggle动画修正

 

在先前的版本中, 当动画相互覆盖并且前一个动画被用.stop()中止后,.slideToggle() or .fadeToggle() 不能正常工作. 在1.7中这个现象被修复, 系统会自动记录元素的初始值,当一toggle动画过早被终止时重新复位元素值.

 

Asynchronous Module Definition (AMD)

 

JQUERY现在支持 AMD API. 注意jquery1.7本身不是一个script loader;它与 AMD-compliant loaders 比如 RequireJS 或者 curl.js 一起工作时,它就能被动态地加载,已经就绪的事件也可以被loader控制. 现在 AMD-compliant loader 可以通过Google’s 或 Microsoft’s CDN服务器来加载一个未经修改的JQUERY1.7.感谢 James Burke (@jrburke) 提交补丁和测试, 并耐心地等待我们认真处理.

 

jQuery.Deferred

 

 1.7使用新的进程句柄和调用句柄的通知函数来扩展jQuery.Deferred 对象. 使其不必响应或拒绝请求就可以通知进程响应.并且, 新的state()方法会返回deferred的当前状态, 对于调试非常有帮助.

 

Deferreds 现在使用 一种新的jQuery.Callbacks 功能来实现,这是一种排列和触发一系列句柄的广义的途径.尽管deferreds 和事件子系统为这种类型的功能,提供一个高级接口, 但是该特性对于插件作者还是相当有用

 

jQuery.isNumeric()

 

在jquery中我们经常需要判断是不是数字, 或者转化后是不是数字. 因为这是将成为一个有用的功能,所以我们决定编写 jQuery.isNumeric(),并提交交了文档 . 传入一个任意的值, 它就会给出true或false.

 

移除功能

 

event.layerX 和 event.layerY: 我们已经移除了没有实际意义的属性. 我们本应当认真起草一份关于废除的最终申明, 但是chrome 16 生成了大量的警告信息.所以我们选择了立即移除它们. 在支持这些属性的平台上 可以用 event.originalEvent.layerX 和 event.originalEvent.layerY来访问.

 

jQuery.isNaN(): 这个尚未加入文档的功能已被废除.这个函数具有歧义, 因为它跟javascript内置的函数同名,但却有着不同的意义. 新版本中的是jQuery.isNumeric()是被正式文档化的, 可以用来作为替代函数. 尽管isNaN()未被文档化, 在github上依然有部分工程在使用.我们已经联系过相关作者,建议他们停止使用,并寻找其他方案

 

jQuery.event.proxy(): 这个尚未加入文档并被废弃功能已被正式删除. 用户应当调用jQuery.proxy()来代替.

posted @ 2012-02-10 18:39  蝌蚪归来  阅读(1061)  评论(0编辑  收藏  举报