让我们看看jQuery 3.0有什么新玩意

作为迄今为止最流行的 JavaScript 库,jQuery 为无数的 Web 开发者带来了福利。 jQuery 从 2006 年诞生至今,已经被许许多多的 Web 开发者运用在项目中,极大地方便了开发。

时间回到 2015 年 7 月, jQuery 3.0 发布了第一个测试版———这是长久以来的一次重要发布。让我们一起来看看 jQuery 中有什么新的东东,能帮我们更愉快地玩耍。

show() 和 hide()

show() 和 hide() 这两个函数的工作方式发生了重要的变化。 jQuery 这么做当然有他的理由。在过去,使用hide()会把元素的 CSS 属性 display设置为none,而使用show()会把这个元素清除。这么做就容易乱套。举几个例子:

  1. 如果一个元素的属性设为了display:inline ,而在另一个样式表中想通过使用show()方法,把属性变成 display:block,这种做法会破坏代码。
  2. 当我们设计响应式网站,进行媒体查询时,可能会通过使用display或者visibility属性来控制元素是否可见。这么做也会干扰show()和hide()方法。

除了以上说的这两个以外,还能举出很多 jQuery 团队不得不填这个坑的例子。恶果就是运行效率下降性能低下,所以 jQuery 团队推出了一种简单的模型。

这样一来,一旦把元素设置成display:none ,那么不管接下来你使用什么方法,show()、 slideDown()、fadeIn() 还是其它类似的方法,你都没法让这个元素显示出来。控制元素可见性的最好方法是使用 addClass() 和 removeClass() 方法。或者我们也可以在调用 ready() 的期间,调用元素的 hide() 方法。

用简单的例子说明一下:

<!DOCTYPE HTML>

<html>

    <head>

<style>

        .invisible{

            display: none;

        }

        .visible{

            background-color: deepskyblue;

            display:block;

        }

    </style>

<script src=“jquery-3.0.0-beta1.js”></script>

<script>

        $(document).ready(function(){

            $(“#div1”).addClass(“invisible”);

            $(“#toggle”).click(function(){

                $(“#div1”).removeClass(“visible”);

                $(“#div1”).addClass(“invisible”);

            });

        });

    </script>

    <title>Control Visibility</title>

    </head>

    <body>

        <p>Hello!</p>

        <div id=“div1”>Can you see this?</div>

        <button id=“toggle”>Click me</button>

    </body>    

</html>

让我们看看jQuery 3.0有什么新玩意

让我们看看jQuery 3.0有什么新玩意

 

.data() 的关键字命名

为了顺应 HTML5 数据集合的标准,jQuery 团队 改变了 .data() 的运行机制。如果 data-* 属性中的关键字中包含数字的话,这个数字不再参与转化。看看下面这个例子:

在 jQuery 2.1.4 中 :

让我们看看jQuery 3.0有什么新玩意

控制台并没有显示出这个对象。

在 jQuery 3.0.0 中 :

让我们看看jQuery 3.0有什么新玩意

由于数字不再转化成驼峰表示,所以关键字被转化成了 foo-42-name ,控制台输出了结果。可以在 fiddle 上观看演示 http://jsfiddle.net/nWCKt/25/ 。你可以改变 jQuery 版本,看看结果有什么不同。

同样道理,如果想通过不带参数的 data()方法来显示所有的 data 内容的话,我们发现如果在 data-* 属性中的关键名中,短线“-”后紧跟着一个数字的话,新旧版本的 jQuery 中参数的个数是不同的,正如上面的例子。

HTML:

<div data-foo-42-name=”namebar” data-foo-42-yes=”yesbar”></div>

JavaScript:

var div = $(‘div’);

console.log(div.data());

在 jQuery 3.0中,会显示对象{foo-42Name: “namebar”, foo-42Yes: “yesbar”}。但是在之前的版本中则只显示一个空的对象{}。

部分浏览器会返回 width 和 height 的像素值。现在不论是 .width(), .height(), .css(“width”), 还是 .css(“height”) ,只要是支持的浏览器, jQuery 都将返回十进制数。对于一直使用像素值设计网页的朋友们,可谓一件值得庆幸的好消息。

去掉了 .load()、 .unload() 和 .error() 方法

这些方法早都是老掉牙过时的了,现在终于从 jQuery 3.0.0 测试版中移除了。推荐做法是使用 .on() 方法来处理相应的事件。举一个简单的例子:

HTML:

<img src=”space-needle.png” alt=”Space Needle” id=”spacen”>

老掉牙的做法(现在已经抛弃了这种做法)

$( “#spacen” ).load(function() {

      // Handler implementation

    });

现在推荐的做法:

$( “#spacen” ).on( “load”, function() {

        // Handler implementation

    });

jQuery 对象终于支持迭代了

从现在起,你可以用 ES2015 中的 for-of 对 jQuery 对象进行迭代。所以,你可以写出这样的代码:

for ( node of $( “<div id=spacen>” ) ) {

  console.log( node.id ); // Returns ‘spacen’

}

jQuery 动画现在在后台使用 requestAnimationFrame API

所有的现代浏览器现在都支持 requestAnimationFrame (详见: http://caniuse.com/#search=requestAnimationFrame)。由于 requestAnimationFrame 的普及度如此之广,jQuery 使用这个 API 来执行动画操作。它的优点包括支持更平滑的动画和更少的 CPU 密集型动画(也就是说能节省移动设备的电量)。

.unwrap() 方法的增强

.unwrap() 方法可以让你移除 DOM 中匹配元素的父节点,但这个方法在以前都不能接收参数。如果想基于父节点的条件来执行 .unwrap() 的话,就会遇到麻烦。

在 jQuery 3.0.0 测试版中, jQuery 3.0.0 alpha能接受 jQuery 选择器的参数,这个问题也就迎刃而解了。

将 jQuery.Deferred 更新成可兼容 Promises/A+

promise 是一个异步操作的的最终结果 —— 它指的是这样一个对象,它能保证在将来产生一个结果。和 promise 互动的主要方式是通过 then 方法,then 方法注册了回调函数。在 JavaScript 中使用 Promise 来实现异步已经变得越来越流行。Promises/A+ 是交互的 JavaScript promises 的一个开放标准。(更多详细信息,请戳这里:https://promisesaplus.com/)

在 jQuery 文件中, Deferred 对象是一个可链接适用对象,通过调用jQuery.Deferred() 方法创建。它能注册多个回调函数到回调队列中,引发回调队列,并能传递每个同步或异步函数的成果获失败状态。在 jquery 3.0.0 测试版中,更新了jQuery.Deferred 对象,来兼容 Promises/A+ 和 ES2015 Promises。所以, .then()方法也有了重大的变化。

更好的错误处理能力

这版的 jQuery 能更好地处理错误事例 —— 被忽略的不正确的请求,抛出错误。

比如:根据相关标准文件, offset属性代表了匹配元素中第一个元素的坐标。如果你想获取 window 的 offest 属性值的话,老版本的 jQuery 回返回结果{top: 0, left: 0} ,并没有报错。但是我们知道 window 的 offset 属性本身是没意义的。所以在 3.0 测试版中,更正了这个错误,获取 window 的 offest 属性值的话就会报错

另外一个例子: $(“#”) 现在会报错,而不再是返回一个长度为 0 的集合。

定制选择器( 比如 :visible )速度的大幅度提升

在 DOM 中多次使用 :visible 等等选择器的性能已经有了很大的提升。这其实是缓存发挥了作用 —— 所以在第一处使用选择器的地方,性能并没有提升。但是,在后面每个调用选择器的地方,性能都得到了巨大的提升,缓存在这里发挥着功不可没的作用。 jQuery 团队的 Timmy Willison 指出由于缓存的作用, :visible 选择器性能提升了大约 17 倍。

以上都是新版中的重要更新。完整的更新列表请参见官方博客: http://blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/。

下载新版本的途径

本次发布了两个版本:

  1. jQuery 3.0, 支持现代浏览器 : https://code.jquery.com/jquery-3.0.0-alpha1.js
  2. jQuery Compat 3.0, 还能兼容支持 IE8 : https://code.jquery.com/jquery-compat-3.0.0-alpha1.js

同时也可以通过 npm 安装

安装指令:

npm install jquery@3.0.0-alpha1

npm install jquery-compat@3.0.0-alpha1

欢迎试用新版本,可以在 https://github.com/jquery/jquery 网站反馈信息。真的值得一用哦!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。商机网仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.315965.com/n/53000.html 聚才发 母婴好物

(0)
上一篇 2023年12月15日 上午6:09
下一篇 2023年12月15日 上午6:18

相关推荐

  • 6k star!B站、滴滴、小红书都在用的网站防火墙

    你担心网站被黑客攻击么?你知道如何抵御来自黑客的攻击吗? 据称互联网上有 30% 的流量都来自于恶意攻击。做过 Web 开发或者有过建站经验的朋友对 SQL 注入、CC 攻击、XSS、WebShell 等名词应该并不陌生,如果你经常在日志中看到各种奇奇怪怪的请求,这说明你的网站可能已经遭遇了黑客攻击。 SafeLine 简介 今天,推荐给大家的是一款在社区广…

    2023年12月26日
    48
  • 互联网创业要注意什么?(十个网上创业知识点)

    在大环境不太好的的情况下,如何通过互联网实现创业赚钱?对于这个问题我们从不同角度会找到不同的答案。这期分享一篇关于怎么通过互联网创业赚钱的指南,看看这篇来自vxgongzhonghao姜辉的创业笔记,分享的关于互联网创业文章介绍。   网上跟你讲道理的人很多,带你赚钱的人很少。 一、互联网是一个创造奇迹的地方   很多人普通人通过做自媒体、短视频、直播带货、…

    2023年12月20日
    147
  • “超级充电宝”蓄势待发 还面临哪些挑战?

    装机规模增长、技术装备提升、应用成本下降……近年来,包括抽水蓄能、新型储能等技术在内的储能技术和装备,为促进新能源的开发消纳、提高电力系统的灵活性,发挥了积极作用。 未来,还需通过进一步发力技术研发、健全市场机制、保障安全水平等,循序渐进,推进储能高效应用和高质量发展。 山间峡谷,国网新源安徽桐城抽水蓄能电站加紧施工,超过21亿千瓦时的设计年发电量,可满足安…

    2023年12月22日
    154
  • 什么是大数据?

    对于“大数据”的定义,从IDC机构角度来看,它是为了从海量、高频率、复杂性高的结构化和非结构化数据中提取有价值信息而设计的一种新技术和框架。 在当今这个信息化程度不断深化、互联网快速发展的时代,数据量不断增大,而人工处理数据的能力却始终有限,于是大数据技术的发展就应运而生了。它可以以更加高效的方式处理数据,从而获得更多、更有价值的信息。 大数据技术一般包含数…

    2023年12月15日
    175
  • 初级瑜伽基础入门教程(基础瑜伽入门)

    初学者练瑜伽,总会感觉身体僵硬、身体打不开、很多体式做不到位!其实初接触瑜伽,由于身体肌肉、筋膜都还比较紧张,不适合练习太大幅度的体式,需要循序渐进地练习! 今天分享一套超级适合初学者练习的瑜伽序列,全身都能锻炼到,体式也不难,把这篇文章收藏起来,坚持练习! 1、下蹲式 山式站立,双脚分开略比肩宽 双脚、双膝向外打开约45度 吸气,脊柱延展,呼气,收核心 屈…

    2023年8月2日
    361
  • 如何下载推特视频

    有没有铁子们常常在推特上看到一些超有趣的视频,想要保存下来但是却不知道该怎么保存呢?今天我告诉你们直接保存到手📱机相册的终极方案,毫不费劲!真的很简单,不服来战!而且绝对真实有效! 步骤详解: ①先打开推特,选择一个视频,点【分享】按钮 复制链接 ②再打开【光影存图】app(安卓和苹果手📱机在手📱机应用商店就能搜到),点下方的【存图】 ③粘贴链接到白框,点击…

    2023年12月23日
    308
  • 《带你入门前端工程》开源了

    小书大部分的内容都是以理论知识 + 代码示例 + 图片的方式来讲解的,努力争取让读者更容易理解。另外还有小部分的章节在讲解完理论知识后,还有相应的实践教程。例如前端监控这一节,在讲解完前端监控原理后,将会教你如何利用现有的监控工具对项目实行监控。

    2023年12月15日
    139
  • windows10重装系统教程(重装windows10系统的详细教程)

    电脑怎么重装系统win10.首先,我们插上系统u盘,然后按咱们的开机键,一直按f12 每张主板的启动热键不同,我这里已经放了一个图给大家 然后选择win8pe点回车,在这里稍作等待,然后进入到我们的pe装机界面 打开u深度pe装机工具,找到咱们这个硬盘,然后右击快速分区 大家想分几个就可以分几个,然后分多大,然后在工具里,找到我们拷贝到u盘的系统镜像选择一下…

    2023年7月31日
    305
  • 小程序开发流程详细(小程序开发入门教程)

    数据绑定 vx小程序页面渲染时,框架会将WXML文件同对应的Page的data进行绑定,在页面中我们可以直接使用data的属性,其使用的语法是Mustache语法,也就是使用双大括号将变量或简单的运算规则包裹起来,实现的主要渲染方式有以下几种: 简单绑定 简单绑定就是使用Mustache语法(双大括号)将变量包起来,在模版中直接作为字符串输出使用,可以用于内…

    2023年7月31日
    204
  • Nodejs读书笔记

    今天终于把朴灵老师写的《深入浅出Node.js》给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架、库的使用层面上,而是从不同的视角来揭示Node自己内在的特点和结构。建议有一定Node基础或者做过Node方面的小项目的同学阅读,看完以后你的思维会有很奇特的碰撞,我看的时候就常常会有这样的想法:“哦,原来这个功能是这样实现的…

    2023年12月15日
    161