jQuery称雄网络当今世界已近六个十年间了,它能始终固守并非没理据的。历经极短一两年,jQuery在不久前正式发布了新版:jQuery 3.0和jQuery Compat 3.0(相容版)。该版更高性能、更加速,考量了向后相容。赢得新一代出访版请出访:jQueryA43EI267SM。你也能看一看升级换代文件格式和 源代码。
责任编辑重点项目讲诉jQuery 3.0中以下几点新一代的关键变动及怎样采用它。
1. jQuery 3.0 运转在严苛商业模式下
当今社会基本上全力支持jQuery 3.0的应用程序都全力支持严苛商业模式,该版便是如前所述此展开校对正式发布的。
你的标识符早已运转在非严苛商业模式?不必害怕,你无须改写。jQuery 3虽为严苛商业模式,但并不强制性在严苛模式下运转你的标识符。严苛商业模式和非严苛商业模式会融洽的并存~
2. For…of 循环式
jQuery 3.0 全力支持 for…of 函数,一类新式的for循环式。那个捷伊插值是ECMAScript 6的一部分。它得出一类更间接的结点第一类(如Arrays,Maps,和Sets)的形式。在jQuery 3.0中,for…of将代替$.each(…)。
var items = $(.random-class); // old jQuery way $.each(items, function(index, value) { // do something }); // ES6 way for(let item of items) { // do something };表明:for…of仅用作全力支持ES6的应用程序,或是你采用了JSC++,比如说Babel。
3. 动画接口:requestAnimationFrame( )
jQuery 3.0 采用requestAnimationFrame() 处理动画。它使动画运转起来更流畅、迅速,减少CPU密集型动画。但仅用作全力支持 它的应用程序。对于老的应用程序(如IE9),它会采用之前的API。更多 RequestAnimationFrame的内容能查询这里。
4. escapeSelector( ) 转义包含特殊意义的字符串
$.escapeSelector()那个新方法将转义CSS选择器中有特殊意义的字符或字符串。它适用作CSS中含有表意特殊的字符的类名或ID,如.或是:。这种情况不常发生,不过一旦遇上,就能轻松解决掉了。
//consider this is your element <div id=”abc.def”></div> //above element cant be selected like this because the selector is parsed as “an element with id abc that also has a class def. $(#abc.def) //with jQuery 3.0 it can be selected like this $( # + $.escapeSelector( abc.def ) )5. 对XSS攻击的附加防护
jQuery 3.0添加了额外安全层,用来防止 (XSS))攻击。采用时需要在 $.ajax() 和 $.get()方法中指定dataType: script。即,当请求跨域脚本时,必须要声明这一点。
Flaws that allow these attacks to succeed are quite widespread and occur anywhere a web application uses input from a user within the output it generates without validating or encoding it.
XSS攻击是一类注入攻击,其中恶意脚本注入受信任站点。XSS攻击发生在攻击者采用web应用发送一段恶意标识符(一般采用应用程序端脚本形式),给另一个不同的终端用户。web应用一旦采用了没历经验证或编码的输入就会有问题。
6. 删除.ajax()中的特殊延迟方法
$.ajax()返回的jqXHR第一类是一类 Deferred。先前,它有三种附加方法对应着参数第一类success, error 和 complete。jQuery 3.0 删除了这些方法。现在能采用 Deferred的标准方法done, fail和 always,或是采用捷伊 then 和 catch方法。
7. .get() 和 .post()的新签名
jQuery 3.0 为$.get() 和 $.post() 增添了新签名settings。增加settings参数,从而与$.ajax()的接口风格一致。settings是一个第一类,包含很多属性,与提供给$.ajax()的参数格式一致。唯一不同是传相同的settings给$.get()和$.post(),method属性经常被忽略,而传给$.ajax()不会。
//HTTP Get $.get([settings]) //HTTP Post $.post([settings])8. 全力支持SVG的类操作方法
从jQuery 3.0起, 开始完全全力支持SVG。jQuery操作CSS类名的方法,如.addClass() 和 .hasClass() 也能用来全力支持SVG了。这意味着能用jQuery在SVG里查找类,并且指定样式。
9. 简易的Show/Hide 逻辑
the .show(),.hide() and .toggle() methods will focus on inline styles rather than computed styles. The docs asserts that the most important result will be:
这是一项关键的变动,需要铭记于心。。从现在开始,这些方法.show(),.hide() 和 .toggle()将只为inline styles服务,不再为computed styles效力了。文件格式声明最关键的结果将是:
As a result, disconnected elements are no longer considered hidden unless they have inline display: none;, and therefore .toggle() will no longer differentiate them from connected elements as of jQuery 3.0.
因此,未关联元素不再被考量hidden,除非它有inline display: none; .toggle() 不再区分关联和未关联元素。。
如果想更好的理解捷伊show/hide,可参看jQuery团队的这张 表,或阅读这篇关于它的有趣的 Github discussion 。
10. .width ( ) 和 .height ( )全力支持小数
之前,jQuery对width(), height()及类似的方法提供的返回值是round类型(舍入取整),jQuery 3.0解决了那个bug,能拿到更精确的结果,如float类型。这是非常好的进步,毕竟有时,用户的确需要更精准的数据来处理布局。
11. 废弃.bind()和.delegate()方法
jQuery 1.7 引入.on()方法来处理事件捕获。3.0中不建议采用.bind(), .unbind(), .delegate() 和 .undelegate()方法,并且这些方法在以后的版中可能会被彻底删除。你能放心大胆地在你的项目里采用on() 和 off()方法,不必害怕它之后被删除~
总结
很多人认为jQuery已死,并且在以后的web当今世界里不再有一席之地。但它还在继续发展,拥护它的统计数据(几百万中占有率高达78.5%)也让这些论调不攻自破。
责任编辑带领你了解了jQuery 3.0的大部分改动,也许你早已注意到,那个版本不太可能会破坏你现有的项目。继续采用jQuery吧,“Write Less, Do More”。
via:http://www.zcfy.cc/article/what-s-inside-jquery-3-0-jquery-3-0-new-features-917.html