位置: 编程技术 - 正文

即将发布的jQuery 3 有哪些新特性(即将发布的新能源汽车)

编辑:rootadmin

推荐整理分享即将发布的jQuery 3 有哪些新特性(即将发布的新能源汽车),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:即将发布的大屏手机,即将发布的手机,即将发布的手机,即将发布的直面屏手机,即将发布的新品手机,即将发布的新品手机,即将发布的平板电脑,即将发布的平板电脑,内容如对您有帮助,希望把文章链接给更多的朋友!

jQuery 的横空出世,至今已有十个年头了,而它的长盛不衰显然不是没有理由的。jQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

在未来的几周内,jQuery 就将抵达一个重要的里程碑——正式发布 3.0 版本。jQuery 3 修复了大量的 bug,增加了新的方法,同时移除了一些接口,并修改了少量接口的行为。在这篇文章中,我将为大家重点讲解 jQuery 3 所引入的那些最重要的变化。

新增特性

我们先来讨论 jQuery 3 中最重要的几个新增特性。

for...of 循环

在 jQuery 3 中,我们可以用 for...of 循环语句来迭代一个 jQuery 集合中的所有 DOM 元素。这种新的迭代方法是 ECMAScript (即 ES6)规范中的一部分。这个方法可以对 “可迭代对象”(比如 Array、Map、Set 等)进行循环。

当使用这种新的迭代方法时,你在循环体内每次拿到的值并不是一个 jQuery 对象,而是一个 DOM 元素(译注:这一点跟 .each() 方法类似)。当你在对一个 jQuery 集合进行操作时,这个新的迭代方法可以少许改善你的代码。

为了搞清楚这种迭代方法到底是怎么工作的,我们来假设一个场景——你需要给页面中的每个 input 元素分配一个 ID。在 jQuery 3 之前,你可能会这样写:

而在 jQuery 3 中,你就可以这样写了:

(译注:其实 jQuery 自己是有个 .each() 方法的,可读性也不赖。)

$.get() 和 $.post() 函数的新签名

jQuery 3 为 $.get() 和 $.post() 这两个工具函数增加了新签名,从而使得它们和 $.ajax() 的接口风格保持一致。新签名是这样的:

settings 是一个对象,它包含多个属性。它的格式和你以前传给 $.ajax() 的参数格式是一样的。如果你想更清楚地了解这个参数对象,请参考 $.ajax() 页面 中的相关描述。

$.get() 和 $.post() 的参数对象与传给 $.ajax() 的参数相比,唯一的区别就是前者的 method 属性总是会被忽略。原因其实也很简单,$.get() 和 $.post() 本身就已经预设了发起 Ajax 请求的 HTTP 方法了(显然 $.get() 就是 GET,而 $.post() 就是 POST)。也就是说,正常人类应该是不会想用 $.get() 方法来发送一个 POST 请求的。

假设有以下一段代码:

不管我们把 method 属性写成什么,这个请求总是会以 GET 的方式发出去的。

采用 requestAnimationFrame() 来实现动画

所有现代浏览器(包括 IE 及以上)都是支持 requestAnimationFrame 的。jQuery 3 将会在内部采用这个 API 来实现动画,以便达到更流畅、更省资源的动画效果。

unwrap() 方法

jQuery 3 为 unwrap() 方法增加了一个可选的 selector 参数。这个方法的新签名是这样的:

有了这个特性,你就可以给这个方法传入一个包含选择符表达式的字符串,用它来在父元素内进行匹配。如果存在匹配的子元素,则这个子元素的父层将被解除;如果没有匹配,则不进行操作。

有变更的特性

jQuery 3 还修改了一些特性的行为。

:visible 和 :hidden

jQuery 3 将会修改 :visible 和 :hidden 过滤器的含义。只要元素具有任何布局盒,哪怕宽高为零,也会被认为是 :visible。举个例子,br 元素和不包含内容的行内元素现在都会被 :visible 这个过滤器选中。

因此,如果你的页面中包含如下的结构:

然后运行以下语句:

在 jQuery 1.x 和 2.x 中,你得到的结果会是 0;但在 jQuery 3 中,你会得到 2。

data() 方法

另一个重要的变化是跟 data() 方法有关的。现在它的行为已经变得跟 Dataset API 规范 一致了。jQuery 3 将会把所有属性键名转换成驼峰形式。我们来详细看一下,以如下元素为例:

当我们在用 jQuery 3 以前的版本时,如果运行如下代码:

将会在控制台得到如下结果:

而在 jQuery 3 中,我们将会得到如下结果:

即将发布的jQuery 3 有哪些新特性(即将发布的新能源汽车)

请注意,在 jQuery 3 中,属性名已经变成了驼峰形式,横杠已经被去除了;而在以前的版本中,属性名会保持全小写,并原样保留横杠。

Deferred 对象

jQuery 3 还改变了 Deferred 对象的行为。Deferred 对象可以说是 Promise 对象的前身之一,它实现了对 Promise/A+ 协议 的兼容。这个对象以及它的历史都相当有意思。如果想要深入了解,你可以去阅读 jQuery 官方文档,也可以去看我写的书《jQuery 实战(第三版)》——这本书也涵盖了 jQuery 3。

在 jQuery 1.x 和 2.x 中,传给 Deferred 的回调函数内如果出现未捕获的异常,会立即中断程序的执行(译注:即静默失败,其实 jQuery 绝大多数回调函数的行为都是这样的)。而原生的 Promise 对象并非如此,它会抛出异常,并不断向上冒泡,直至到达 window.onerror(通常冒泡的终点是这里)。如果你没有定义一个函数来处理这个错误事件的话(通常我们都不会这么做),那这个异常的信息将会被显示出来,此时程序的执行才会停止。

jQuery 3 将会遵循原生 Promise 对象的模式。因此,回调内产生的异常将会导致失败状态(rejection),并触发失败回调。一旦失败回调执行完毕,整个进程就将继续推进,后续的成功回调将被执行。

为了让你更好地理解这个差异,让我们来看一个小例子。比如我们有如下代码:

在 jQuery 1.x 和 2.x 中,只有第一个函数(也就是抛出错误的那个函数)会被执行到。此外,由于我们没有为 window.onerror 定义任何事件处理函数,控制台将会输出 “Uncaught Error: An error”,而且程序的执行将中止。

而在 jQuery 3 中,整个行为是完全不同的。你将在控制台中看到 “Failure 1” 和 “Success 2” 两条消息。那个异常将会被第一个失败回调处理,并且,一旦异常得到处理,那么后续的成功回调将被调用。

SVG 文档

没有哪一个 jQuery 版本(包括 jQuery 3)曾官方宣称支持 SVG 文档。不过事实上有很多方法是可以奏效的,此外还有一些方法在以前是不行的(比如操作类名的那些方法),但它们在 jQuery 3 中也得到了更新。因此,在 jQuery 3 中,你应该可以放心使用诸如 addClass() 和 hasClass() 这样的方法来操作 SVG 文档了。

已废弃、已移除的方法和属性

在增加了上述改进的同时,jQuery 也移除、废弃了一些特性。

废弃 bind()、unbind()、delegate() 和 undelegate() 方法

jQuery 在很久以前就引入了 on() 方法,它提供了一个统一的接口,用以取代 bind()、delegate() 和 live() 等方法。与此同时,jQuery 还引入了 off() 这个方法来取代 unbind()、undelegated() 和 die() 等方法。从那时起,bind()、delegate()、unbind() 和 undelegate() 就已经不再推荐使用了,但它们还是一直存在着。

jQuery 3 终于开始将这些方法标记为 “废弃” 了,并计划在未来的某个版本(很可能是 jQuery 4)中将它们彻底移除。因此,请在你的项目中统一使用 on() 和 off() 方法,这样你就不用担心未来版本的变更了。

移除 load()、unload() 和 error() 方法

jQuery 3 彻底抛弃了 load()、unload() 和 error() 等已经标记为废弃的方法。这些方法在很早以前(从 jQuery 1.8 开始)就已经被标记为废弃了,但一直没有去掉。如果你正在使用的某款插件仍然依赖这些方法,那么升级到 jQuery 3 会把你的代码搞挂。因此,在升级过程中请务必留意。

移除 context、support 和 selector 属性

jQuery 3 彻底抛弃了 context、support 和 selector 等已经标记为废弃的属性。同上,在升级到 jQuery 3 时,请留意你正使用的插件。

已修复的 Bug

jQuery 3 修复了以往版本中的一些非常重要的 bug。在本节中,我将着重介绍其中两处,因为这两者应该会对你写代码的习惯带来显著影响。

width() 和 height() 的返回值将不再取整

jQuery 3 修复了 width()、height() 和其它相关方法的一个 bug。这些方法的返回值将不再舍入取整,因为这种取整行为在某些情况下不便于对元素进行定位。

我们来详细看一看。假设你一个宽度为 px 的容器元素,它包含了三个子元素,宽度均为三分之一(即 .%):

在 jQuery 3 以前的版本中,如果你尝试通过以下代码来获取子元素的宽度……

……那么你得到结果将是 。原因在于 jQuery 会把 . 这个值取整。而在 jQuery 3 中,这个 bug 已经被修复了,因此你将会得到更加精确的结果(即一个浮点数)。

wrapAll() 方法

jQuery 3 还修复了 wrapAll() 方法中的一个 bug,这个 bug 出现在把一个函数作为参数传给它的情况下。在 jQuery 3 以前的版本中,当一个函数被传给 wrapAll() 方法时,它会把 jQuery 集合中的每个元素单独包裹起来。换句话说,这种行为和把一个函数传给 wrap() 时的行为是完全一样的。

在修复这个问题的同时,还引入了另外一个变更:由于在 jQuery 3 中,这个函数只会调用一次了,那就无法把 jQuery 集合中每个元素都传给它。因此,这个函数的执行上下文(this)将只能指向当前 jQuery 集合中的第一个元素。

如何下载 jQuery 3 beta 1

既然你已经读到了这里,那说明你很可能想试试 jQuery 3 的第一个 beta 测试版。你可以通过以下两个地址来获取这个版本:

未压缩版: 压缩版: npm 来下载:

[code]npm install jquery@3.0.0-beta1[/code]

结论

很多人一直在唱衰 jQuery,说它在现代网页开发中已经没有一席之地了。但不管怎样,jQuery 的开发仍在继续,客观的统计数据(在排名前一百万名的网站中占有率高达 .5%)也让这些论调不攻自破。

在本文中,我已经带你了解了一遍 jQuery 3 将会带来的一些重大变化。或许你已经察觉到了,这个版本并不太可能搞挂你的既有项目,因为它引入的破坏性变更其实寥寥无几。不过,在升级到 jQuery 3 的过程中,你还是有必要牢记一些关键点,比如 Deferred 对象的改进等等。同样,在升级某个第三方库时,也有必要检查一下该项目的兼容性情况,以便尽早发现任何非预期行为,避免某些功能失效。

译注

除了本文所提及的变更之外,jQuery 3.0 最大的变化就是彻底放弃对 IE8 的支持。jQuery 团队做出这个决定的原因在于,微软已经在今年年初宣布停止对 IE 8~ 的支持。因此,jQuery 在 3.0 alpha 阶段所发布的 jQuery Compat 项目也就没有继续存在的必要了。

不过,由于 IE8 仍然是中国大陆最流行的浏览器之一,对国内的开发者来说,在短期(甚至中期)内还不得不停留在 jQuery 1.x 版本。

好吧,最后还是说个好消息吧。为帮助用户平滑升级,此次 jQuery 同样会为 3.0 版本提供迁移插件(jQuery Migrate plugin)。在把 jQuery 升级到 3.0 之后同时运行这个插件,即可确保基于 jQuery 1.x 或 2.x 的既有业务代码正常运行;同时,它还将在控制台向你报告既有代码与 jQuery 3 不兼容的地方。当你修复了这些不兼容问题之后,就可以安全地移除这个插件了。

基于jQuery实现音乐播放试听列表 本文为大家分享了jQuery实现的音乐播放试听列表,可以实现播放,暂停,自动获取音频路径功能,具体内容如下1.html文件!DOCTYPEhtmlhtmlheadmetahttp-equiv="Conte

jQuery循环遍历子节点并获取值的方法 本文实例讲述了jQuery循环遍历子节点并获取值的方法。分享给大家供大家参考,具体如下:Html代码部分:divclass="left_tree_ad_btn_container"ulliclass="tree_ad_btn_b

jQuery获取父元素节点、子元素节点及兄弟元素节点的方法 本文实例讲述了jQuery获取父元素节点、子元素节点及兄弟元素节点的方法。分享给大家供大家参考,具体如下:先来看这段html代码,整个取节点(父、

标签: 即将发布的新能源汽车

本文链接地址:https://www.jiuchutong.com/biancheng/384927.html 转载请保留说明!

上一篇:jQuery操作属性和样式详解(jquery基本操作)

下一篇:基于jQuery实现音乐播放试听列表(jquery audio)

  • 小型微利企业的从业人数和资产总额
  • 营业税金及附加是什么科目
  • 材料按实际成本计价时发出成本的计算方法有
  • 已收保证金
  • 小规模差额申报怎么申报
  • 增值税 不含税
  • 营业外收入在所得税表中填入哪个科目
  • 税控盘服务费减免税会计分录
  • 金融负债
  • 持有待售的固定资产减值可以转回吗
  • 费用怎样确认是可抵扣暂时性差异?
  • 一般纳税人销售二手车增值税税率
  • 工业企业税负率一般控制在多少?
  • 白蚁防治费怎么计算
  • 公司没有员工怎么零申报
  • 公司非本单位退休人员发放工资
  • 水电费计提和冲销
  • 企业开增值税普通发票 电子版
  • 资产处置损益计入利润吗
  • 广播影视服务需要交文化事业建设费吗
  • 应收出租包装物的租金计入
  • 发票过期未认证怎么办
  • 收到退回残疾金分录
  • 独立核算的分公司可以享受小微企业吗
  • 房地产企业闲置土地怎么处理
  • 4s店修车送保养
  • 调整增值税税率
  • 评估增值的账务处理
  • 偶然所得怎么缴纳个人所得税免税
  • 单位给个人报销计入什么科目
  • swoole和websocket的区别
  • win10开机强制进入修复模式
  • linux的系统配置文件
  • ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1
  • 收据不可以入账吗
  • 餐饮发票可以计入福利费吗
  • 如何解决Vue3没有代码提示问题?
  • pytorch example
  • 红字发票进项转出当期
  • 个体户可以不办公户吗
  • github账号在哪里看
  • echarts快速上手
  • 生产企业出口退税政策
  • 购买图书可以开增值税专票么?
  • 公司账户转私账违法吗
  • 税收优惠与政府补助对于企业研发来说哪个优惠力度大
  • python获取某个值
  • 融资租赁手续费一次性还是摊销
  • 应交税费余额是什么意思
  • 记账凭证核算形式
  • 工会经费计提分录最新规定
  • 营业外收入应如何核算
  • 土地出让金如何核算
  • 用于研发的材料如何入账
  • 跨月报销的凭证有哪些
  • 公益性捐赠要确认递延吗
  • 公司向法人借款需要交税吗
  • 没有认证的进项发票可以做成本吗
  • mysql5.7.17 zip 解压安装详细过程
  • windows中任务栏
  • win7系统默认输入法
  • Win Server 2003 使用技巧图解
  • mac app store打开一片空白
  • Ubuntu下配置vpn工作环境
  • xp安装盘复制u盘
  • win7系统怎么调整字体大小
  • android.json
  • 浅析js动态创建方法
  • 【ExpandableListView】ExpandableListView互斥展开效果
  • [置顶]游戏名 TentacleLocker
  • Node.js Mongodb 密码特殊字符 @的解决方法
  • jquery get(0)
  • 八大排序算法的时间空间复杂度
  • jquery网页跳转
  • 办理税控盘的流程
  • 三亚 税务
  • 电子税务局app扫脸认证
  • 购车发票包含
  • 国家税务总局令第52号 ,税务稽查案件办理程序规定
  • 巾帼文明岗主题内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设