jQuery3的新特性
前言:自从react,vue等方便的新框架出现后,好多大公司已经摒弃了jquery,但是大部分的公司还在使用,并且jquery的版本还在一直更新中。jquery2.x版本将不再支持IE6/7/8浏览器。现在更新到的最新版本3.x增加了一些新特性,也摒弃了一些特性。接下来就总结一下:
一,增加的一些特性
1,for...of循环
可以用来遍历一个jquery集合所有的DOM元素。
假设你想给页面中每个input元素分配一个ID,在jQuery3之前,你可以这样写:
var inputs = $('input');
for(var i=0;i<inputs.length;i++){
inputs[i].id = 'input-'+i;
}
jQuery3:
var inputs = $('input');
var i=0;
for(var input of inputs){
input.id = 'input-'+i++;
}
2,采用requestAnimationFrame()来实现动画
IE10以上的版本都支持这个函数
3,unwrap()
该方法增加了一个可选的选择器参数
unwrap([selector])
有了这一变化,你就可以传入包含一个选择器表达式的字符串,在父元素进行匹配,如果存在匹配,匹配的子元素被解包,不进行任何操作。
二,被修改的一些特性
1,:visible和:hidden
修改了过滤器的含义,只要元素具有任何布局,包括那些宽度或高度为0的情况,元素被认为是:visible。比如说 <br/>元素和没有内容的内联元素可以通过:visible过滤器进行选择
<div></div>
<br />
console.log($('body:visible').length);
jquery 1.x 2.x中输出的结果是0, jquery 3中结果是2。
2,data()
该调整主要是为了让该方法符合DatasetAPI规范,jquery3 强所有属性的键都该驼峰式大小写形式
<div id="container"></div>
var $elem = $('#container');
$elem.data({
'my-property':'hello'
});
console.log($elem.data());
在控制台上获得以下结果:{my-property:"hello"}
在jquery3 {myProperty:"hello"}
3,Deferred对象
jquery 1.x 2.x 中 ,传入deferred中的回调函数中如果出现未捕获异常,会导致程序停止执行。而原生的Promise对象并非如此,它会抛出异常,并不断向上冒泡,直至到达window.onerror。
jquery3遵循原生的Promise对象的模式,因此,抛出的异常将被视为一个失败状态(rejection)从而执行失败回调,完成之后,整个进程 将继续进行,后续的成功回调将被执行。
var deferred = $.Deferred();
deferrea.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”,而且进程的执行将终止
而jquery3中,行为完全不同,在控制台中会看到failure1 和success2两条消息。异常会被第一个失败回调处理,一旦被处理,则继续执行下面的成功函数。
三,已废弃,移除的方法和属性
1,废弃了bind(),unbind(),delegate(),undelegate()
用on()方法提供了统一的访问接口,取代了bind(),delegate(),live()
off()取代了unbind(),undelegate(),die()
2,移除了load(),unload(),error()
3,移除context,support,selector这些属性
4,bugs修复: width()和height()的返回值不再四舍五入
5,wrapAll()
jQuery3的新特性的更多相关文章
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- [干货来袭]C#6.0新特性
微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...
- CSS3新特性应用之结构与布局
一.自适应内部元素 利用width的新特性min-content实现 width新特性值介绍: fill-available,自动填充盒子模型中剩余的宽度,包含margin.padding.borde ...
- 【译】Meteor 新手教程:在排行榜上添加新特性
原文:http://danneu.com/posts/6-meteor-tutorial-for-fellow-noobs-adding-features-to-the-leaderboard-dem ...
- 跨平台的 .NET 运行环境 Mono 3.2 新特性
Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新. Mono 3.2 主要新特性: LLVM 更新到 3.2 版本,带来更多 ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- es6 新特性2
es6其他几个非常有用的新特性. import export 这两个家伙对应的就是es6自己的module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成 ...
- ES6 新特性
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
随机推荐
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即“service”阶段.在“service”阶段中,每一次Http请求到来,容器都会启动一个请求线程,通过serv ...
- WebForm——IIS服务器、开发方式和简单基础
一.B/S和C/S 1.C/S C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据 ...
- Intellij IDE 常用设置
1· 去除代码提示的Case sensitive(比如Sprite,键入sprite不进行任何提示) Editor->Code Completion->Case sensitive com ...
- [总结] JDBC数据库操作
1.加载驱动--告诉驱动管理将使用哪一个数据库的驱动包. class.forName("com.mysql.jdbc.Driver"); 2.操作JDBC ADI完成数据库动作 D ...
- PHP $_SERVER详解
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...
- Android USB Host与HID通讯
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 比较好的文章是: Android USB Host与HID通讯 Android Service创建US ...
- spring 笔记1: mvn 中Controller方法的参数不能是嵌套类(内部类)。
最近做spring开发,个人认为,Controller和客户端js通讯时传递的参数类 只使用某几个方法,为了减少对其他功能的影响,想把参数类定义为Controller类的 嵌套类(内部类).但是实践发 ...
- httpd 安装
官网地址:http://httpd.apache.org/docs/2.4/ Download Download the latest release from http://httpd.apache ...
- python实现排序算法
冒泡排序 import randomdef BubbleSort(num): n=len(num) for i in range(0,n): for j in range( ...
- Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
1.首先简单介绍一下我们的数据库,thinkphp数据库下有一个tp_user表,然后有四个字段....id,username,password,sex 我们今天的任务就是在Thinkphp下将数据调 ...