目前jquery最新版是1.5.2,可以到官网下载:http://docs.jquery.com/Downloading_jQuery,其实,也可以直接应用google cdn上的,访问速度相当的快,地址是:http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js
jquery1.5版本相比之前的版本,有以下一些变化:
(1)Deferred Object
jQuery.Deferred, introduced in version 1.5, is a chainable utility object that can register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.
简单的说,JQuery._Deferred是一个函数队列,有以下几个作用:
1.保存若干函数
2.在特定的时刻把保存着的函数全部执行掉
3.执行过后,新进来的函数会立刻执行
说明白了jQuery._Deferred,再来看看jQuery.Deferred。这个东西其实就是2个_Deferred组成的,第一个称为deferred,用于保管“正常”状态下的函数;第二个称为failDeferred,用于保管“出错”状态下的函数。
(2)JQuery.ready的变化
因为有了jQuery._Deferred这个东西,jQuery.ready函数变成依赖于函数队列,具体的变化有:
原来的readyList变量已经不再是一个数组,而变成了jQuery._Deferred对象。
原本在DOMContentLoaded时,调用readList中所有函数的逻辑,现在也使用了jQuery._Deferred中。
(3)jQuery.parseXML
新增了静态函数jQuery.parseXML,用于提供浏览器兼容的从字符串转为XML文档的功能。
(4)data部分
添加了jQuery.hasData函数,用于判断一个元素是否有jQuery附加上去的数据。
修改了jQuery.expando的实现,在原来单纯地取当前时间的基础上,添加了一个随机数:
expando = "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" );
这样保证在同一时间,引入多个jQuery副本,这几个副本之间的expando不会相互冲突,导致元素上的data变得错乱。一般来说,是不会引入多个jQuery副本的,但是使用SealJS等的时候,配置不当的话,也是很容易出现此类问题的。
(5)DOM操作部分
原本的hasClass、addClass、removeClass函数都需要将元素的class属性分隔为数组,在1.4.4版本中,通过\n或\t进行分隔,在1.5中增加了一个\r,用于对应Windows平台下的换行符(\r\n)。
jQuery.fn.attr函数,1.4.4版本中拒绝从TextNode和CommentNode上获取属性,在1.5版本中添加了一个AttributeNode(noteType == 2)。
在1.4.4版本中,jQuery会在页面unload的时候清理掉由jQuery维护的所有DOM事件,这是为了避免IE的内存泄露问题。但是在1.5中这一段代码不见了,不知是出于什么考虑。
对于IE下使用cloneNode复制节点,会将事件也一起复制过来的问题,1.4.4中是采取复制innerHTML的方式给予解决,而在1.5中则采纳了mootools团队提供的方法,使用cloneFixAttribute函数修正该问题。
cloneFixAttribute函数们于jQuery 1.5 beta1源码文件的5388-5438行,处理IE的BUG的原理很简单,当然前端里一些看似简单的东西,都是很难发现的:
IE中有个叫clearAttributes的函数,会清除到节点上的所有属性,顺便把和事件相关的onclick之类的属性也去掉了。在复制出来的节点上调用这个函数,就会把属性清得干干净净。 IE中还有一个叫mergeAttributes的函数,把一个节点的属性复制到另一个节点上,但他不会把和事件相关的属性复制过去。所以再把原始节点调用mergeAttributes,把属性重新放回复制出来的节点上,这就相当于起到了去除事件相关属性的作用。
另外cloneFixAttribute函数还处理了非常多IE6-8在cloneNode上的兼容性问题,非常值得详细研究。
(6)AJAX部分
AJAX已经完全重写了,只留下一点边边角角保留着1.4.4版本的风采,这里只抽取一部分进行简单的说明。
原来版本中$.get和$.post的实现非常相似,具体来说仅有一个method配置项不同,因此在1.5版本中被合并起来了:
$.each(['get', 'post'], function(i, method) { $[method] =function() { ... }; });
ajaxSetup函数现在加了一行return this;,可以链式调用了。
serializeArray函数现在统一将value中的换行符替换成Windows的风格(\r\n)。
AJAX的回调函数中,作为参数的对象不再是原生的XMLHTTPRequest,而是jQuery自己封装的称为jXHR的对象,这个对象提供了XMLHTTPRequest的常用接口。
原本对于“请求成功”的浏览器状态码,除200-299以及304外,还有一个1223,来自于IE的一个BUG,会将204的状态码变成1223。现在因为有了jXHR对象,相当于中间多了一层,因此从jXHR对象获取statusCode不会出现1223的情况,已经被变回204了。
jQuery.ajax函数的配置项中多了一个statusCode项,其结构为map,用于指定返回特定状态码时的回调函数,大致形式如下:
jQuery.ajax({ url: 'xxx',
statusCode: {
200: function() { 处理请求成功 },
404: function() { 处理页面未找到 },
503: function() { 处理Service Unavailable }
}
});
再添加了这个回调后,jQuery.ajax函数已经有非常多的回调函数,其触发过程如下:
根据返回的状态码,触发success或者error回调。 根据状态码,触发对应的statusCode回调。 触发complete回调。 触发全局ajaxComplete回调。 如果此时没有正在执行的AJAX,触发全局ajaxStop回调。
其他细节
入口函数jQuery.fn.init现在多了一个参数,值始终为rootjQuery,用于加速init函数中对rootjQuery变量的查找速度(减少了一层作用域):
//jQuery 1.5 beta1 源码23行
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}jQuery对象支持继承了,具体的修改是将几处直接调用jQuery的代码改为了对this.constructor的调用:
202行:return this.constructor( context ).find( selector );
253行:var ret = this.constructor();
334行:return this.prevObject || this.constructor(null);同时还提供了jQuery.subclass函数用于创建一个继承自jQuery的类型,由于不是很常用jQuery,更是从来没有用到过需要继承jQuery的情况,因此也不方便说这个功能的作用有多大。
分享到:
相关推荐
4. **动画性能优化**:jQuery 1.5.2改进了动画性能,尤其是在大量元素的动画序列中,能够更流畅地执行。 5. **选择器引擎优化**:这个版本对Sizzle选择器引擎进行了优化,提高了选择器的匹配速度,使得DOM查询更快...
本篇文章将聚焦于jQuery 1.5.2这一经典版本,探讨其核心特性、改进以及在实际项目中的应用。 首先,jQuery 1.5.2是jQuery库的一个里程碑版本,它在2011年发布,包含了多项关键更新和优化。这个版本不仅提高了性能,...
jQuery 1.5.2是该库的一个重要里程碑,它在前一版本的基础上进行了一系列优化和改进,为开发者提供了更稳定和高效的性能。 ### 2. jQuery 1.5.2 版本特性 - **选择器增强**:jQuery 1.5.2 支持更多的CSS3选择器,...
- jQuery 1.5.2是在1.x系列中的一个稳定版本,它在性能、兼容性和API完善上做了很多改进。 - 引入了Deferred对象,用于处理异步操作,如Ajax请求,使得异步编程更加优雅。 - 对于jQuery选择器和遍历方法进行了...
在本文中,我们将深入探讨jQuery 1.5.2的核心特性、主要改进以及如何在实际项目中有效利用这些功能。 一、jQuery基础 jQuery 是一个快速、简洁的JavaScript库,它的主要目标是简化HTML文档遍历、事件处理、动画...
jQuery 1.5.2版本引入了一些新特性,如Promise对象的改进,增强了异步操作的处理能力。此外,还修复了一些已知问题,提高了性能和稳定性。 三、学习资源与实践 3.1 学习资料 `西西软件.txt`可能包含关于jQuery ...
在这些版本之间,jQuery不断改进了动画效果的性能,比如`.animate()`方法,使得创建复杂的动画序列变得简单。同时,jQuery也不断扩展了对新CSS属性的支持,如透明度、边框半径等。 值得注意的是,虽然这个压缩包...
这里我们关注的是jQuery的1.5.2版本。这个版本在当时是相当流行的一个版本,因为它提供了许多实用的功能和改进,使得前端开发变得更加高效。 1. **jQuery核心**: - **选择器**:jQuery的核心功能之一就是强大的...
jQuery EasyUI 1.5.2 版本更新内容 Bug(修复) form:修复在调用“reset”方法的时候会导致input输入框初始值消失的BUG; textbox:修复在调用“destroy”方法的时候无法清除字段标签的BUG; datagrid:修复在不...
1.5.2 版本是其一个重要版本,包含了一系列改进和优化。这个离线简体中文API文档是为了方便开发者在没有网络的情况下也能查阅相关资料,提升开发效率。 jQuery EasyUI 的核心理念是“Write Less, Do More”,它通过...
jQuery EasyUI 1.5.2 版本更新内容 Bug(修复) • form:修复在调用“reset”方法的时候会导致input输入框初始值消失的BUG; • textbox:修复在调用“destroy”方法的时候无法清除字段标签的BUG; • datagrid:...
- **1.5.2**:此版本引入了Promise对象,改进了AJAX请求的异步处理,提高了代码可读性和维护性。 - **1.6.x**:增加了`attr()`和`prop()`方法的区分,attr用于获取或设置属性,prop用于获取或设置DOM元素的属性值...
1.5.2是该框架的一个稳定版本,包含了众多用户友好的改进和优化。这个docset(文档集合)特别针对中文用户设计,使得开发者在理解和使用EasyUI时能够更加得心应手。 **jQuery EasyUI 的核心特性** 1. **组件丰富**...
5. **1.5.2 版本的更新与改进** - 修复了前一版本中的已知问题,提高了框架的稳定性。 - 对部分组件进行了优化,提升了用户体验。 - 可能新增了一些特性或组件,以满足更多开发需求。 综上所述,"jquery-easyui-...
5. **Changelog**: `changelog.txt`包含了EasyUI 1.5.2版本的更新记录,列出了相对于前一版本的改进、新增功能和已知问题修复,对于开发者来说是了解升级必要性的关键信息。 6. **License**: `license_freeware.txt...
3. **jQuery 1.6** 和 **jQuery 1.5.2**:这些早期版本可能只支持有限的特性集,且可能存在一些已知的问题。对于新的项目来说,这些版本通常不推荐使用。 4. **jQuery 1.7.2** 和 **jQuery 1.7.1**:这两个版本引入...
- 提供了开发版(版本号1.5.2,未压缩且含注释,大小为43KB)和生产版。 - 另外,项目也包含不稳定版,即当前开发中的master分支,使用此类版本存在一定的风险。 6. **函数集合操作**: - Underscore提供了一套...
《jQuery 1.5, 1.6, 1.7 深度解析与实践指南》 ...通过实际操作压缩包中的`jquery-1.5.2.zip`, `jquery-1.6.zip`, `jquery-1.7.zip`文件,可以深入学习并实践这些知识点,进一步提升JavaScript和jQuery的开发技能。
1. `jquery-1.5.2.min.js`:这是jQuery库的一个版本,1.5.2是jQuery的一个稳定版本,发布于2011年,包含了一系列优化和改进。"min"表示这是一个压缩过的版本,用于减少页面加载时间。 2. `jquery.json-1.3.js`:这个...
版本1.5.2是该框架的一个稳定版本,包含了前几个版本的改进和优化。 总的来说,jQuery EasyUI 是一个高效、灵活的前端开发工具,它大大简化了构建用户界面的过程,使开发者能够专注于应用程序的业务逻辑,而不是UI...