jQuery官方商标

2012年8月9日,jQuery基金会推出了jQuery 1.8。随着新式浏览器和javascript引擎的兴起,大型ajax应用加速普及,重写Sizzle元素选择器的举动标志着优化革命的开始。仅仅四个月后,在2013年1月15日,jQuery 1.9发布,退役了一批违反代码卫生原则的函数接口,进一步优化速度。自1.8开始,jQuery大大缩短了产品周期,还在用1.4.2的朋友们得抓紧赶上啊!

对已有代码影响最大的恐怕是.live()的去世。其实,如果大家关注了jQuery官方博客,.live()早在1.7版发布时就被贴上了去除标签。不幸的是,庞大的现有jQuery资源中有太多代码都在调用.live(),官方微弱的声音立马被广大的拿来主义用户所忽略。.live()将动态事件处理函数挂载在文档根元素上,事件被传递至事件树的顶端才被执行,显然会负面影响代码的执行效率。所有处理函数都挂在根元素上也不利于函数管理。替代.live()的.on()可以将动态处理函数挂载在任意元素上,元素一旦被移除,此处理函数将会自动被卸载。.on()也替代了.bind()和.delegate(),成为了事件处理的统一工具。按照官方的规划,未来我们仅需要简短、强大的.on()。相对应的.off()也同时替代了.die()、.unbind()、.undelegate()。on/off通俗易懂,何乐而不为呢?

另一个大家不情愿的变化是$.browser的移除,2012年10月2日发布的jQuery Mobile 1.2甚至都对浏览器嗅探有所依赖。$.browser在清洗名单中呆了整整四年,本次移除受到了强大的社区阻力。包括jQuery的创始人Rezig,不少javascript代码卫生倡议者都建议大家进行HTML5功能检测,以代替浏览器嗅探。在HTML中加入条件加载语句

<!--[if lt IE 8]><script src='json2.js'></script><![endif]-->

也不如HTML5功能检测严谨。我在极光账本的首页开发中就应用了HTML5功能检测,提示不支持原生JSON或localStorage的浏览器用户升级浏览器。原生的IE8是完全支持JSON模块的,但之前版本没有支持。假如我使用浏览器嗅探提示IE6/7的用户升级浏览器,拥有IE8内核但不支持JSON的搜狗浏览器就不会得到提示。您也许不像我那么愤青,所以我建议您在javascript中为没有JSON的浏览器加载json2.js:

if (!window.JSON) {
    $.getScript('json2.js'); 
}

以兼容所有浏览器。

万众瞩目的jQuery 2.0与1.9版的外部接口完全一致,其革命性意义在于去除了IE8及以下IE内核的支持。与Windows 7共同诞生的IE8还未上小学,就已经成为了jQuery的社区公敌。对极光账本这类记账网站而言,由于没有原生canvas支持,IE8的图表绘制性能令人难以接受。从jQuery 2.0版的开发日程看,它与jQuery Mobile 1.3可能会同时发布,因为微软在移动平台上终于跟上了大部队的脚步,所有主流智能手机平台都支持基本的HTML5。同时,node.js等服务器端javascript框架无需担忧浏览器兼容问题,去除了老IE兼容代码的jQuery 2.0能优化服务器脚本程序。若一切顺利,2.0版立马将在手机浏览器和服务器上大有作为。

jQuery 1.9升级至少是一次清理代码的好机会,将所有老语句替换成官方推荐的稳定语句。温故而知新,还能纠正以前的不良代码习惯。不需要支持老旧浏览器的朋友更有福了,jQuery 2.0不仅体积更小,而且将成为史上最快的jQuery发行版。