jQuery是一个被众多网站或应用广泛使用的轻量级 JavaScript库,一直是我们这些Web开发者的神器。自从它在2006年发布最初版本直到如今,jQuery以其优秀的兼容性且保持免费和开源赢得了众多开发者的参与和网站的使用,已经有非常多的Web开发者在项目中引入了这个优秀的库来使开发工作变得更轻松。
继2016年2月份jQuery团队终于发布3.0 Alpha版本之后,近日,jQuery基金会目前已经正式发布了该JavaScript框架的V3.0正式版本,该版本也首次抛弃了对老旧版本 Internet Explorer浏览器的支持。
jQuery 3.0版的开发工作在2014年10月份就已经开始了,jQuery基金会的目标是在 2.0 版上进行完善并与遥远的1.0版代码说再见。
jQuery 1.0版因为需要兼容各种版本的 Internet Explorer 浏览器因为变得极其臃肿,而 2.0 版已经和 1.0 版完全不兼容、3.0 版也将继续这个路线。
jQuery基金会表示3.0版的突破性变化很小,用户应该可以轻松地通过jQuery Migrate将代码移植过来,用户无需再他们的项目中增加对老旧版本的IE浏览器的支持。
下面,我们来看看jquery3.0的变化。
1、简化了 show/hide
之前的 show/hide 是大兼容,比如 show, 无论元素的 display 是写在style,stylesheet里都能显示出来。3.0 则不同了,写在 stylesheet 里的display:none 调用 show 后仍然隐藏。3.0建议采用 class 方式去显示隐藏,或者完全采用 hide 先隐藏(不使用css代码),再调用 show 也可以。
input {
display: none;
}
$('#txt').show(); // 仍然隐藏的状态
2、data 方法兼容 data-name-11 写法
// 3.0 版本 输出 {"name-11": aa}, 之前版本输出 {}
$('#txt').data()
这个问题本质是$.camelCase方法的实现差异// 3.0 输出 "name-11", 3.0 之前版本输出 "name11"
$.camelCase('data-name-11')
3、derferred 兼容了 Promise/A+
3.0 终于可以自信的宣告支持 Promise/A 了,之前一直被诟病是阉割版的。
4、$.ajax 对象删除了 success | error | complete 方法
这是因为 Promise/A 规范的推动,大家对 Promise 的使用越来越多,之前对应 Derferred 上的几个方法没有存在的必要了
•derferred.done -> jqXHR.success
•derferred.fail -> jqXHR.error
•derrerred.always -> jqXHR.complete// 以下方法在 3.0 后没有了
$.ajax().success
$.ajax().error
$.ajax().complete
5、width/height,css(width) / css(height) 的返回值一律是十进制
之前部分浏览器特殊情况下返回浮点数。
6、 移除了注册事件的快捷函数 load | unload | error
•load 名称和 ajax load 同名, 含糊不清。
•unload 如果 load 去掉, unload 也没有存在的意义了。
•error 采用 window.onerror 注册,不是一个标准事件 hander,因此也建议移除。
如果你(开发者)仍然不愿意放弃已经被微软放弃的 Internet Explorer 6/7/8,那么很遗憾你只能继续使用 jQuery 1.0 版了。
jQuery 相关阅读: