jQuery3的新特性

來源:互聯網
上載者:User

標籤:var   containe   ...   str   訊息   失敗   何事   字元   輸出   

前言:自從react,vue等方便的新架構出現後,好多大公司已經摒棄了jquery,但是大部分的公司還在使用,並且jquery的版本還在一直更新中。jquery2.x版本將不再支援IE6/7/8瀏覽器。現在更新到的最新版本3.x增加了一些新特性,也摒棄了一些特性。接下來就總結一下:

一,增加的一些特性

1,for...of迴圈

可以用來遍曆一個jquery集合所有的DOM元素。

假設你想給頁面中每個input元素分配一個ID,在jQuery3之前,你可以這樣寫:

1 var inputs = $(‘input‘);2 for(var i=0;i<inputs.length;i++){3     inputs[i].id = ‘input-‘+i;4 }

jQuery3:

1 var inputs = $(‘input‘);2 var i=0;3 for(var input of inputs){4    input.id = ‘input-‘+i++;5 }

2,採用requestAnimationFrame()來實現動畫
IE10以上的版本都支援這個函數

3,unwrap()

該方法增加了一個可選的選取器參數

1 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)從而執行失敗回調,完成之後,整個進程 將繼續進行,後續的成功回調將被執行。

 1 var deferred = $.Deferred(); 2 deferrea.then(function(){ 3    throw new error(‘an error‘); 4 }).then( 5     function(){ 6       console.log(‘success 1‘);     7     },function(){ 8     console.log(‘failure 1‘); 9 }).then{10  function(){11       console.log(‘success 2‘);    12     },function(){13     console.log(‘failure 2‘);14 }15 );16 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的新特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.