亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery 3.0 的變化及使用方法

2019-11-20 10:38:54
字體:
來源:轉載
供稿:網友

jQuery ,是迄今為止世界上最流行的 JavaScript 庫,一直是我們這些 Web 開發者的神器。自從它在 2006 年發布最初版本直到如今,已經有非常多的 Web 開發者在項目中引入了這個優秀的庫來使開發工作變得更輕松。

時隔 3 個月,jQuery 團隊終于發布了 3.0 Alpha 版本。有兩個版本 jQuery compat 3.0 和 jQuery 3.0。

•jQuery compat 3.0 對應之前的 1.x, 兼容更多的瀏覽器,對于IE支持到 8.0 版本
•jQuery 3.0 對應之前的 2.x,關注更新的瀏覽器,對于IE支持到 9.0 版本

此外, 3.0還增加了對 Yandex 瀏覽器的支持,一款來自俄羅斯的瀏覽器。

1、簡化了 show/hide

之前的 show/hide 是大兼容,比如 show, 無論元素的 display 是寫在style,stylesheet里都能顯示出來。3.0 則不同了,寫在 stylesheet 里的 display:none 調用 show 后仍然隱藏。 3.0 建議采用 class 方式去顯示隱藏,或者完全采用 hide 先隱藏(不使用css代碼),再調用 show 也可以。

<style>input {display: none;}</style><input id="txt" type="text" value=""/><script>$('#txt').show(); // 仍然隱藏的狀態</script>

2、data 方法兼容 data-name-11 寫法

<input id="txt" type="text" value="" data-name-11="aa"/><script>// 3.0 版本 輸出 {"name-11": aa}, 之前版本輸出 {}$('#txt').data()</script> 

這個問題本質是$.camelCase方法的實現差異

// 3.0 輸出 "name-11", 3.0 之前版本輸出 "name11"$.camelCase('data-name-11') 

3、derferred 兼容了 Promise/A+

3.0 終于可以自信的宣告支持 Promise/A 了,之前一直被詬病是閹割版的。

4、$.ajax 對象刪除了 success | error | complete 方法

這是因為 Promise/A 規范的推動,大家對 Promise 的使用越來越多,之前對應 Derferred 上的幾個方法沒有存在的必要了

•derferred.done -> jqXHR.success
•derferred.fail -> jqXHR.error
•derrerred.always -> jqXHR.complete

// 以下方法在 3.0 后沒有了$.ajax().success$.ajax().error$.ajax().complete 

5、width/height,css(width) / css(height) 的返回值一律是十進制

之前部分瀏覽器特殊情況下返回浮點數。

6、 移除了注冊事件的快捷函數 load | unload | error

•load 名稱和 ajax load 同名, 含糊不清。
•unload 如果 load 去掉, unload 也沒有存在的意義了。
•error 采用 window.onerror 注冊,不是一個標準事件 hander,因此也建議移除

以上內容給大家總結了jquery3.0的變化,下面主要給大家介紹jquery3.0更新內容及使用方法。

顯示和隱藏

主要的改變是函數將如何工作的。而且有很好的理由這樣做。在早些實現上,hide() 函數設置 css 屬性為“display:none”,show() 函數是清除這個屬性。但是這樣做有些混亂。讓我們看看幾個例子:

1. 如果當 show() 函數嘗試設置一個節點為“display:block”而在另外一個樣式表里實現了“display:inline”屬性,這將開始破壞代碼。

2. 當我們為媒質處理響應式網頁設計時(RWD),我們也許會用“display”或者“visibility”改變節點的可見性。這可能會影響“show()”和“hide()”函數。

除了這些,還有很多 JQuery 團隊不得不去修復的其它問題。這導致了復雜的實現和性能問題,因此他們遷移到一個簡單的模型。

今后,如果你設置“display:none”和使用“show()”,“slideDown()”,“fadeIn()”或者類似的方法去顯示節點,它不會有效。更好的方法是使用“addClass()”和“removeClass()”控制顯示?;蛘呖梢栽凇皉eady()”調用的時候在元素上調用“hide()”。

迅速舉個例子:

<!DOCTYPE HTML><html><head><style>.invisible{display: none;}.visible{background-color: deepskyblue;display:block;}</style><script src="jquery-3.0.0-alpha1.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>

.data() Key 的命名規則

jQuery 團隊改變了 .data() 函數的實現來更符合 HTML5 數據集規范。如果 data-* 屬性中的 key 包含了數字,該數字將不再參與轉換。思考下面的例子:

使用 jQuery 2.1.4:

 

控制臺窗口不顯示對象。

使用 jQuery 3.0.0:

 

由于現在數字不會參與轉換為駱駝拼寫法,key 被轉換成了 foo-42-name。因此,我們得到了控制臺中的輸出。這個 fiddle 的網址是 http://jsfiddle.net/nWCKt/25/ 。你可以更改 jQuery 的版本來觀察變化。

同樣,如果我們想要不帶任何參數地使用 data() 顯示所有的數據,如果 data-* 屬性的 key 名在連字符(-)后面接了一個數字,則參數的數量也將會在兩個 jQuery 版本中改變,就像上面的例子一樣。

width() 與 height() 函數返回小數值

一些瀏覽 器會將寬度和高度返回為亞像素值。現在無論瀏覽器是否支持, jQuery 的 .width()、.height()、.css("width") 都可以返回小數值了。對于為了使用 亞像素精度來 設計網頁的用戶來說,這可能 會是一個好消息。

.load()、.unload()、及 .error() 函數被移除

這些方法早先已經不贊成使用了,現在則已經從 jQuery 3.0.0 alpha 版中被移除。推薦的方法是使用 .on() 函數來處理這些事件。簡短示例:

HTML:

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

JavaScript:

早先的實現方式(現已不可用)

$( "#spacen" ).load(function() {// Handler implementation});

推薦的實現方式:

$( "#spacen" ).on( "load", function() {// Handler implementation});

jQuery 對象現在可遍歷了

現在已經可以遍歷 jQuery 對象了,使用 ES2015 的 for-of。所以,你可以像這樣使用:

for ( node of $( "<div id=spacen>" ) ) {console.log( node.id ); // Returns ‘spacen'}

jQuery 動畫現在在后端使用了 requestAnimationFrame API

所有現代的瀏覽器都已經支持了 requestAnimationFrame(參見: http://caniuse.com/#search=requestAnimationFrame )了。由于其被普遍支持,jQuery 將會使用此 API 來執行動畫。其優勢包括更流暢的動畫及更少的 CPU 占用(因此,可以在手機上節約電量)。

增強 .unwrap() 函數

.unwrap() 函數可以讓你在 DOM 中刪除指定元素的父元素,早先不能接收參數。如果有人想給 unwrap 設定一個條件,這可能是個問題。

在 jQuery 3.0.0 alpha 中,.unwrap() 可以接收 jQuery 選擇器做為參數來處理這個問題。

jQuery.Deferred 升級為 Promises/A+ 兼容

Promiseis是一個異步操作的最終結果――它是一個對象,承諾在未來交付結果。 和promise接口的最主要方式是then方法, 它注冊了回調函數?,F在,在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,要獲取當前第一個元素的坐標,相對于文檔來說,就要匹配集合中的元素。如果你正試圖在 jQuery 的早期版本找到抵消的窗口(window),你會得到{top: 0, left: 0}這樣的結果,而不是拋出一個錯誤,這是因為抵消窗口(window)是無意義的。而在 3.0 alpha 版本中,它就會拋出一個錯誤。

另外一個例子:$("#") 現在會拋出一個錯誤,而不是返回一個長度為 0 的集合。

對自定義選擇器(如 :visible ) 進行了加速

當 :visible 之類的選擇器在一個文檔內多次使用時,性能得到了很大的提升。其內部是通過緩存來實現的 ―― 第一次用過這個選擇器后,以后返回結果都是一樣的。但是其后的每一次調用返回結果都很快,因為緩存起作用了。來自 jQuery 的 Timmy Willison 在 報告 中指出使用緩存后 :visible 選擇器的性能提升了 17 倍。

這些都是一些主要的更新。整個列表在他們的官方博客: http://blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/ .

在哪里下載最新版本

有兩個版本:

jQuery 3.0,其支持了現代瀏覽器: https://code.jquery.com/jquery-3.0.0-alpha1.js

jQuery Compat 3.0,其包含了對 IE8 的支持: https://code.jquery.com/jquery-compat-3.0.0-alpha1.js

也可以從 npm 中獲取:

npm install jquery@3.0.0-alpha1npm install jquery-compat@3.0.0-alpha1
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一级精品国产| 久久视频在线看| 亚洲国模精品私拍| 日韩av最新在线| 韩日欧美一区二区| 久久久999国产| 国产精品国产福利国产秒拍| 久久影视电视剧凤归四时歌| 97国产在线观看| 91超碰中文字幕久久精品| 欧美专区第一页| 欧美黑人一级爽快片淫片高清| 久久成人精品电影| 91色琪琪电影亚洲精品久久| 中文字幕久热精品视频在线| 国产va免费精品高清在线| 91精品啪在线观看麻豆免费| 亚洲欧美日韩网| 欧美成人午夜激情在线| 精品国产91久久久| 亚洲欧美在线一区二区| 久久久久久国产三级电影| 欧美日韩一区二区三区在线免费观看| 日韩亚洲国产中文字幕| 精品网站999www| 激情久久av一区av二区av三区| 亚洲韩国日本中文字幕| 揄拍成人国产精品视频| 亚洲影院色无极综合| 社区色欧美激情 | 日韩美女在线播放| 中文字幕日韩专区| 久久精品国产亚洲精品| 91精品国产一区| 韩国福利视频一区| 亚洲精品一区在线观看香蕉| 亚洲片在线观看| 国产欧美日韩中文字幕| 欧美成人午夜剧场免费观看| 综合网日日天干夜夜久久| 欧美成人剧情片在线观看| 国产精品久久久久久一区二区| 欧美高清视频免费观看| 川上优av一区二区线观看| 久久精品国产清自在天天线| 国产日韩视频在线观看| 青青草国产精品一区二区| 欧美在线一区二区视频| 国产精品高潮呻吟久久av黑人| 国产精品人成电影| 茄子视频成人在线| 久久精品99国产精品酒店日本| 日韩av黄色在线观看| 午夜精品久久久久久久99热浪潮| 日韩在线观看免费高清完整版| 国产精品一区电影| 亚洲理论在线a中文字幕| 91高清免费在线观看| 草民午夜欧美限制a级福利片| 亚洲综合最新在线| 欧美亚洲在线播放| 91日本在线视频| 成人国产精品久久久久久亚洲| 欧美激情一区二区三区成人| 欧美在线性爱视频| 久久久国产成人精品| 成人免费福利视频| 欧美性猛交99久久久久99按摩| 夜夜嗨av一区二区三区四区| 色妞一区二区三区| 亚洲激情视频在线| 成人av色在线观看| 欧美性视频网站| 国产成人精品视频| 国产亚洲一区精品| 最近2019中文免费高清视频观看www99| 欧美成人在线免费视频| 色婷婷亚洲mv天堂mv在影片| 精品久久久中文| 亚洲欧美另类人妖| 国产精品久久久久久久久男| 精品人伦一区二区三区蜜桃免费| 久久精品人人爽| 中文日韩在线视频| 欧美在线性爱视频| 欧美裸身视频免费观看| 精品女同一区二区三区在线播放| 日av在线播放中文不卡| 国产精品第1页| 日韩a**站在线观看| 在线a欧美视频| 国产啪精品视频| 欧美在线国产精品| 国产日韩在线免费| 国产日韩精品入口| 国产精品美女久久久久久免费| 色多多国产成人永久免费网站| 97国产suv精品一区二区62| 亚洲国产中文字幕久久网| 亚洲欧美另类国产| 狠狠躁夜夜躁久久躁别揉| 国产一区二区三区中文| 欧美日韩aaaa| 成人免费大片黄在线播放| 久久久999精品| 91高清视频在线免费观看| 91人成网站www| 亚洲欧美日韩综合| 国产精品自拍小视频| 欧美性猛交xxxx久久久| 国产美女精品免费电影| 久久在精品线影院精品国产| 日韩高清电影免费观看完整| 亚洲欧美成人在线| 日韩综合中文字幕| 成人免费午夜电影| 国产精品免费小视频| 亚洲欧美成人精品| 8090成年在线看片午夜| 日韩在线观看av| 国产精品高潮视频| 欧美性猛交xxxx富婆| 久久视频在线观看免费| 亚洲香蕉在线观看| 日韩精品视频在线观看免费| 精品动漫一区二区三区| 亚洲午夜久久久久久久| 国产精品偷伦视频免费观看国产| 国产成人精品日本亚洲| 高清欧美性猛交xxxx| 日韩美女写真福利在线观看| 91精品国产色综合久久不卡98| 中文字幕精品网| 欧美国产日韩一区| 欧美裸体xxxx极品少妇软件| 日韩久久精品电影| 美女性感视频久久久| 日本a级片电影一区二区| 91高清免费在线观看| 久久国产精品亚洲| 国产精品一区二区三区免费视频| 亚洲人成伊人成综合网久久久| 国产不卡av在线免费观看| 欧美噜噜久久久xxx| 国产精品久久久久999| 亚洲精品97久久| 欧美一区三区三区高中清蜜桃| 国产成人a亚洲精品| 欧洲精品毛片网站| 亚洲日本中文字幕免费在线不卡| 欧美国产日韩一区二区在线观看| 国产中文字幕亚洲| 亚洲高清一二三区| 欧洲成人免费aa| 狠狠色狠色综合曰曰| 日韩欧美亚洲成人| 中文字幕一区日韩电影| 久久久久久久久久亚洲| 操人视频在线观看欧美| 精品国产户外野外| 日韩免费视频在线观看| 日韩专区中文字幕| 亚洲一区二区中文字幕| 亚洲第一精品久久忘忧草社区|