jQuery 3.0十大新特性最终版发布


Posted in Javascript onJuly 14, 2016

jQuery 3.0 最终版发布了。jQuery 3.0将是jQuery的未来。但如果你需要IE6-8支持,您可以继续使用最新版本1.12。

jQuery 3.0在日前发布了最终的全新版本。从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终版www.lampbrother.net。

通过jQuery 3.0的版本更新说明,我们看到了一个保持着向后兼容的更轻便,更快速的jQuery。在本文中,我们将介绍一些令人眼前一亮的jQuery 3.0全新特性。

开始前的说明

如果你想要下载jQuery 3.0进行亲自实验,可以通过该页面进行下载。另外,升级指南和源代码也值得你一看。
如果你想要测试一下你的项目如何在jQuery 3.0中工作的,你可以尝试通过jQuery迁移插件来识别代码的兼容性问题,你也可以查看jQuery未来发展的时间表。

1. 移除旧的IE工作区

新的最终版最主要的目标是更加快速,更加时尚,因此,那些支持早于IE9版本的相关技术与工作区都被移除了。这意味着如果你想要或者需要支持IE6-8,你必须用回1.12版本,因为甚至是2.X版本都无法完整支持早于IE9的浏览器。

注意:在jQuery 3中还弃用了一些其它的功能。截止到2016年6月,升级指南还没有提供一个对于弃用功能的分组整理。因此,你如果想要了解弃用功能,可以通过ctrl+f键来进行搜索。

2. jQuery 3.0运行在Strict Mode下

大多数支持jQuery 3的浏览器都支持strict mode,而在本次更新中对此进行了规定。

虽然jQuery 3是写在strict mode中的,但是你需要了解的是你的代码并不需要运行在strict mode中,因此如果你想要把以前的代码迁移到jQuery 3,你不需要对已存在的jQuery代码进行重写。Strict和non-strict mode的JavaScript代码可以和谐共存。

这里有一些例外:某些版本的ASP.NET,因为strict mode的缘故,无法与jQuery 3兼容,

3. 引进for...of循环

jQuery 3支持for...of语句,这是由ECMAScript 6中新引进的一种for循环语句。这提供了对Arrays,Maps和Sets这样的可迭代对象一种更直接的遍历方法。

在jQuery中,for...of循环可以取代以前的$.each(...)语法,并且更容易通过jQuery的元素集合进行循环。
注意:for...of只能在支持ECMAScript 6的环境下或者使用Babel这样的JavaScript编译器下工作。

4. 动画方面采用新的API

jQuery 3使用requestAnimationFrame() API来执行动画,使动画运行得更加顺畅、快速。新的API只用于支持它的浏览器,对于那些更老的浏览器(如IE9)jQuery使用先前的API来作为显示动画的后备方案。

5. 对包含特殊含义的字符串提供转义的新方法

新的jQuery.escapeSelector()提供了对在CSS中存在特殊含义的字符串或字符进行转义的方法,该方法可使这些字符串或字符能够继续用于jQuery选择器中,而无需对那些无法进行正确理解的JavaScript解释器进行转义。

这个示例可以让你更好的了解这个全新的方法:

举个例子,页面中某个ID为“abc.def”的元素由于选择器将其解析为ID为“abc”且包含一个名为“def”的类的对象,而无法被$( "#abc.def" )选定。但是它可以由 $( "#" + $.escapeSelector( "abc.def" ) )来进行选定。

我无法确定发生中情况的频率,但是假如你碰到过这种类似的情况,这无疑给了你一个解决该问题的简单方法。

6. 类操作方法支持SVG

不幸的是,jQuery 3现在还无法完整的支持SVG,但是对于操作CSS类名称的jQuery方法,如.addClass()和.hasClass()现在可以将SVG文档作为目标。这意味着你可以修改(添加、删除、切换)或者查找SVG(可缩放矢量图形)下的jQuery类,然后使用CSS的类样式。

7. 延迟对象现在与JS Promises兼容

JavaScript Promises,用于异步计算的对象,现在在ECMAScript 6中已经被标准化;它们的运行状况和特性的详细说明参见Promises/A+标准。

在jQuery 3中,延迟对象已经与新的Promises/A+标准相兼容,延迟对象已经成为让创建回调队列成为可能的可链对象(chainable objects)。

新的特性改变了异步回调函数执行过程,Promises允许开发者编写在逻辑上与同步代码更接近的异步代码。

8. jQuery.when()对于多种参数的不同解读

$.when()提供了执行回调函数的一种方法,它成为了jQuery 1.5之后的一部分。这个方法非常灵活,它适用于零参数,也适用于一个或者多个作为参数的对象。

jQuery 3改变了当包含$.then()方法时对$.when()中参数的解读方法,你可以对$.when()进行额外的参数回调。

在jQuery 3中,如果你在$.when()中的then()方法内增加一个输入参数,该参数将会被解释成一个可与Promise兼容的"thenable"。
这意味着 $.when方法能够接收更加宽广的输入范围,比如原生的ES6 Promises和Bluebird Promises,这也使得编写更复杂的异步回调成为了可能。

9. 新的显示/隐藏逻辑

为了增加响应式设计的兼容性,与元素显示和隐藏的代码在jQuery 3中进行了更新。
从现在开始,.show()、.hide()和.toggle()方法将会以内联样式为重点取代以前的计算样式,这种方式能够更尊重样式列表的改变。
新的代码尽可能的尊重样式列表中所呈现的数值,这意味着CSS规则可根据事件(如设备重新定位和窗口尺寸调整)进行动态改变。
这个说明文件申明了最重要的结果就是:

“作为结果,断开连接的元素除非指定了内联display: none,否则将不再认定为是隐藏的。因此,在jQuery 3.0中,.toggle()不再对断开连接元素与已连接元素进行区分。”

如果你想要更好的了解关于全新的显示/隐藏逻辑,这个Github discussion会对你有帮助。jQuery开发者还发布了Google文档表来展示在不同用例下新规则的运转。

10. 对于防止XSS攻击的额外保护

jQuery 3增加一个额外的安全层用户用于防备跨站点脚本(XSS)攻击,它需要开发者指定$.ajax()和$.get()方法中的选项为dataType: "script"。

换言之,如果你想要执行跨站点的脚本请求,你必须在这些方法中作出这样的声明。

新的改变对于当“远程站点传递非脚本内容之后又提供有恶意脚本的服务内容”的情况是非常有效的。这个变化不会影响$.getScript()方法,因为它明确地设置了dataType: "script"选项。

以上所述是小编给大家介绍的jQuery 3.0十大新特性最终版发布,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
当json键为数字时的取值方法解析
Nov 15 Javascript
简介JavaScript中substring()方法的使用
Jun 06 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
Aug 01 Javascript
jQuery插件form-validation-engine正则表达式操作示例
Feb 09 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
Aug 26 Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
js css+html实现简单的日历
Jul 14 #Javascript
javascript运算符——位运算符全面介绍
Jul 14 #Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 #Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 #Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 #Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 #Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 #Javascript
You might like
我的论坛源代码(八)
2006/10/09 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
修复IE9&safari 的sort方法
2011/10/21 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python列表对象实现原理详解
2019/07/01 Python
Python如何实现的二分查找算法
2020/05/27 Python
python中adb有什么功能
2020/06/07 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
Java如何格式化日期
2012/08/07 面试题
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
擅自离岗检讨书
2014/02/11 职场文书
授权委托书怎么写
2014/04/03 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python