• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > 即将发布的jQuery 3 有哪些新特性

即将发布的jQuery 3 有哪些新特性

作者:CSS魔法 字体:[增加 减小] 来源:互联网

CSS魔法 通过本文主要向大家介绍了jQuery,3,新特性等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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 2015(即 ES6)规范中的一部分。这个方法可以对 “可迭代对象”(比如 Array、Map、Set 等)进行循环。

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

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

   $inputs[i].id = 'input-' + i;
}

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

for(var input of $inputs) {
   input.id = 'input-' + i++;
}

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

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

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

$.post([settings])

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

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

假设有以下一段代码:

    url: 'https://www.audero.it',
    method: 'POST' // This property is ignored
                   // 这个属性将被忽略});

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

采用 requestAnimationFrame() 来实现动画

所有现代浏览器(包括 IE10 及以上)都是支持 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 以前的版本时,如果运行如下代码:

$elem.data({   'my-property': 'hello'});console.log($elem.data());

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

而在 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),并触发失败回调。一旦失败回调执行完毕,整个进程就将继续推进,后续的成功回调将被执行。

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

deferred
  .then(function() {    throw new Error('An error');
  })
  .then(    function() {      console.log('Success 1');
    },    function() {      console.log('Failure 1');
    }
  )
  .then(    function() {      console.log('Success 2');
    },    function() {      console.log('Failure 2');
    }
  );
deferred.resolve();

在 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、sup

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • jQuery 下拉列表 二级联动插件分享
  • jQuery针对各类元素操作基础教程
  • javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
  • jquery表单提交带错误信息提示效果
  • jquery——九宫格大转盘抽奖实例
  • jquery自定义插件——window的实现【示例代码】
  • jquery select 设置默认选中的示例代码
  • jquery插件bootstrapValidator表单验证详解
  • 浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
  • 如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery控制div下所有连接
    • 使用JQuery和CSS模拟超链接的用户单击事件的实现代码
    • 快速学习jQuery插件 Form表单插件使用方法
    • jquery实现的美女拼图游戏实例
    • jquery EasyUI的formatter格式化函数代码
    • jQuery基于ajax实现星星评论代码
    • jQuery跨域问题解决方案
    • jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
    • 『jQuery』.html(),.text()和.val()的概述及使用
    • jquery中ajax调用json数据的使用说明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有