jQuery各版本的区别
我们平时使用的jQuery包括了1.x,2.x,3.x这几个版本,今天就大概说一下这几个版本性能的区别
1.X:兼容IE678,使用最为广泛,官网只做BUG维护,功能不再新增。因此一般项目来说,使用1.X版本就可以了。
2.X不兼容ie678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x。(过渡)
3.X不兼容ie678,只支持最新的浏览器。除非特殊要求,一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
所以现在使用最广的版本都是1.x的,因为它能够兼容很多浏览器。
jQuery 2.x 不是 1.x 的后续或者升级版本,他们是同时更新迭代的。
1.X版本的特性
jQuery 1.0:
该库的第一个稳定版本,已经具有了对CSS选择符、事件处理和AJAX交互的稳健支持。
后面没什么大改动,直到了1.4版本,有了新的性能:
常用方法的性能大幅提升:重写了大部分较早期的函数;
更容易使用的设置函数(setter function):为所有对象新增了许多易用的设置函数;
对Ajax的改进:引入了许多Ajax和JSON处理方面的更新,包括HTML5元素的序列化;
attribute(改进了.attr()的性能)、jQuery()核心函数、CSS(.css()性能有两倍提升)、
特效和事件、DOM操作等也有显著改进
1. Ajax重写
Ajax模块完全进行了重写。新增一个jXHR对象,为不同浏览器内置的XMLHttpRequest提供了一致的超集。
对于XMLHttpRequest之外的传输机制,比如JSONP请求,jXHR对象也可以进行处理。
此外,系统的可扩展性大大增强,可以附加各种数据处理器、过滤器和传输机制,为开发新的Ajax插件提供了方便。
2. 延迟对象
延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,
实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。
正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。
这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。
由于jQuery 1.5的Ajax模块内置使用了延迟对象,因此通过jQuery编写Ajax程序将自动获得这一功能。
- jQuery.sub()
jQuery 1.5提供了一种创建和修改jQuery副本的方式。
可以用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新定义以提供新功能,
或者提供更好的封装、避免名称空间冲突。
当然,也可以用来开发插件,但Resig强烈建议在开发插件之前,先考虑jQuery UI widget工厂。
值得注意的是,sub函数并不提供真正的隔离,所有方法、数据、调用仍然依靠jQuery本身来支持。
jQuery 1.7
在这个版本加入了一些我们现在常用的函数,在以前版本是不能用的。
2011年09月29日jQuery 1.7 的第一个 beta 测试版本,该版本修复了超过 50 个的问题以及带来一些新特性。
2011年11月4日jQuery1.7正式版发布。
新版本包含了很多新的特征,特别提升了事件委派时的性能尤其是在IE7下。
新增及改进项:
⒈新的事件 APIs: .on() and .off();
⒉提升了事件委派时的性能有了大幅度的提升,尤其是在IE7下;
⒊更好的在 IE 6/7/8 上支持 HTML5;
⒋切换动画更加直观;
⒌匿名模块定义 AWD
⒍jQuery.Deferred
⒎jQuery.isNumeric()
被删除的方法:
event.layerX and event.layerY
jQuery.isNaN()
后面的版本又主要是修复之前存在的BUG,没加什么新的功能
所以在平时开发1.7基本也就能满足我们的需求了。
另外还要提的是,如果jQuery版本问题和浏览器不兼容会导致一些问题
1、该网页的脚本与所使用的浏览器不兼容,导致参数赋值不正确;
2、浏览器可能被破坏,导致某些页面控件不能正常使用而导致参数赋值不正确;
3、可能本身改网页脚本编写时就存在错误。