欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

提升jQuery的性能需要做好七件事

 更新時間:2016年01月11日 10:01:00   作者:jerrylsxu  
這篇文章主要介紹了提升jQuery的性能需要做好的七件事,希望真的幫助大家提升jQuery性能,需要的朋友可以參考下

做好七件事幫你提升jQuery的性能,想知道哪幾件事情嗎?

1. Append Outside of Loops

凡是觸及到DOM都是有代價的。如果你向DOM當中附加大量的元素,你會想一次性將它們全部附加進來,而不是分多次進行。當在循環(huán)當中附加元素就會產生一個常見的問題。

$.each( myArray, function( i, item ) {

  var newListItem = "<li>" + item + "</li>";
 
 $( "#ballers" ).append( newListItem );
 });

一個常用的技巧是利用文檔片段(document fragment)。在循環(huán)的每一次迭代當中,將元素附加到片段而不是DOM元素當中。當循環(huán)結束后,將片段附加到DOM元素當中即可。

var frag = document.createDocumentFragment();

$.each( myArray, function( i, item ) {

  var newListItem = document.createElement( "li" );
  var itemText = document.createTextNode( item );

  newListItem.appendChild( itemText );

  frag.appendChild( newListItem );

});

$( "#ballers" )[ 0 ].appendChild( frag );

另一個簡單的技巧是在循環(huán)的每次迭代當中,持續(xù)構建一個字符串。當循環(huán)結束后,將DOM元素的HTML設置成該字符串。

var myHtml = "";

$.each( myArray, function( i, item ) {

  myHtml += "<li>" + item + "</li>";

});

$( "#ballers" ).html( myHtml );

當然還有其它一些技巧可以供你嘗試。一個名為 jsperf 的站點為測試這些性能提供了一條好的出路。該網(wǎng)站允許你使用基準測試每一個技巧,并將其跨平臺的性能測試結果可視化的展現(xiàn)出來。

2. Cache Length During Loops

在for循環(huán)當中,不要每次都訪問數(shù)組的 length 屬性;應當事先將其緩存起來。

var myLength = myArray.length;

for ( var i = 0; i < myLength; i++ ) {

  // do stuff

}

3. Detach Elements to Work with Them

操作DOM是緩慢的,因此你想盡可能減少對齊進行操作。jQuery在1.4版本當中引入了名為 detach() 的方法來幫助解決這一問題,它允許你在對元素進行操作時,將它們從DOM當中分離出來。

var $table = $( "#myTable" );
var $parent = $table.parent();

$table.detach();

// ... add lots and lots of rows to table

$parent.append( $table );

4. Don't Act on Absent Elements

如果你正打算在一個空的選擇器上運行大量的代碼,jQuery并不會給予任何的提示 -- 它將會繼續(xù)的執(zhí)行,就像是沒有發(fā)生任何的錯誤。必須由你來驗證選擇器包含了多少元素。

// Bad: This runs three functions before it
// realizes there's nothing in the selection
$( "#nosuchthing" ).slideUp();

// Better:
var $mySelection = $( "#nosuchthing" );

if ( $mySelection.length ) {

  $mySelection.slideUp();

}

// Best: Add a doOnce plugin.
jQuery.fn.doOnce = function( func ) {

  this.length && func.apply( this );

  return this;

}

$( "li.cartitems" ).doOnce(function() {


  // make it ajax! \o/


});

本指南特別適用于那些當選擇器不包含元素時還需要大量的開銷的 jQuery UI 部件。

5. Optimize Selectors

選擇器的優(yōu)化和過去比起來并不是那么的重要,因為很多瀏覽器都實現(xiàn)了 document.querySelectorAll() 方法并且jQuery將選擇器的負擔轉移到了瀏覽器上面。但是仍然有一些技巧需要銘記在心。

基于ID的選擇器

以一個ID作為選擇器的開始總是最好的。

// Fast:
 $( "#container div.robotarm" );
 
 // Super-fast:
 $( "#container" ).find( "div.robotarm" );

采用 .find() 方法的方式將更加的快速,因為第一個選擇器已經過處理,而無需通過嘈雜的選擇器引擎 -- ID-Only的選擇器已使用 document.getElementById() 方法進行處理,之所以快速,是因為它是瀏覽器的原生方法。

特異性

盡量詳細的描述選擇器的右側,對于左側則應反其道而行之。

// Unoptimized:
$( "div.data .gonzalez" );
 
// Optimized:
 $( ".data td.gonzalez" );

盡量在選擇器的最右側使用 tag.class 的形式來描述選擇器,而在左側則盡量只使用 tag 或者 .class 。

避免過度使用特異性

 $( ".data table.attendees td.gonzalez" );
 
 // Better: Drop the middle if possible.
 $( ".data td.gonzalez" );

去討好“DOM”總是有利于提升選擇器的性能,因為選擇器引擎在搜尋元素時無需進行太多的遍歷。

避免使用通用選擇器

如果一個選擇器明確或暗示它能在不確定的范圍內進行匹配將會大大影響性能。

$( ".buttons > *" ); // Extremely expensive.
$( ".buttons" ).children(); // Much better.
 
 $( ".category :radio" ); // Implied universal selection.
$( ".category *:radio" ); // Same thing, explicit now.
$( ".category input:radio" ); // Much better.
復制代碼
6. Use Stylesheets for Changing CSS on Many Elements

假如你使用 .css() 方法來改變超過20個元素的CSS,應當考慮為頁面添加一個樣式標簽作為替代,這樣做可以提升將近60%的速度。

// Fine for up to 20 elements, slow after that:
$( "a.swedberg" ).css( "color", "#0769ad" );

// Much faster:
$( "<style type=\"text/css\">a.swedberg { color: #0769ad }</style>")
  .appendTo( "head" );

7. Don't Treat jQuery as a Black Box

以上就是提升jQuery的性能需要做好的七件事,清楚了吧!

相關文章

  • jquery滾動特效集錦

    jquery滾動特效集錦

    本文給大家匯總介紹的是jquery單行滾動、批量多行滾動、文字圖片翻屏滾動效果代碼,都是分廠常用的一些文字以及圖文的無縫滾動特效,希望能夠對大家熟悉jQuery有所幫助。
    2015-06-06
  • 基于jquery實現(xiàn)九宮格拼圖小游戲

    基于jquery實現(xiàn)九宮格拼圖小游戲

    這篇文章主要為大家詳細介紹了基于jquery實現(xiàn)九宮格拼圖小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • jquery?ajax實現(xiàn)文件上傳提交的實戰(zhàn)步驟

    jquery?ajax實現(xiàn)文件上傳提交的實戰(zhàn)步驟

    今天項目中加了一個上傳文件的需求,我就搞了一下,下面這篇文章主要給大家介紹了關于jquery?ajax實現(xiàn)文件上傳提交的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • js實現(xiàn)圖片放大縮小功能后進行復雜排序的方法

    js實現(xiàn)圖片放大縮小功能后進行復雜排序的方法

    這是一個基于jquery的圖片效果,它的作用是:當圖片點擊變大(變小)時,其它圖片按照一定的規(guī)則進行排序運動
    2012-11-11
  • JQuery對表格進行操作的常用技巧總結

    JQuery對表格進行操作的常用技巧總結

    這篇文章主要介紹了JQuery對表格進行操作的常用技巧,需要的朋友可以參考下
    2014-04-04
  • jQuery漸變發(fā)光導航菜單的實例代碼

    jQuery漸變發(fā)光導航菜單的實例代碼

    今天介紹一個jQuery漸變發(fā)光效果的導航菜單,這是一個簡單的通過jQuery控制opacity實現(xiàn)的導航菜單。
    2013-03-03
  • jQuery實現(xiàn)自定義下拉列表

    jQuery實現(xiàn)自定義下拉列表

    這篇文章主要介紹了使用jQuery實現(xiàn)自定義下拉列表的方法及代碼分享,效果非常不錯,兼容性也很棒,這里推薦給小伙伴們。
    2015-01-01
  • jQuery+json實現(xiàn)的簡易Ajax調用實例

    jQuery+json實現(xiàn)的簡易Ajax調用實例

    這篇文章主要介紹了jQuery+json實現(xiàn)的簡易Ajax調用,結合實例形式分析了jQuery基于ajax實現(xiàn)json傳參調用的技巧,需要的朋友可以參考下
    2015-12-12
  • 詳解JQuery基礎動畫操作

    詳解JQuery基礎動畫操作

    這篇文章主要介紹了JQuery基礎動畫操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • JQuery異步提交表單與文件上傳功能示例

    JQuery異步提交表單與文件上傳功能示例

    這篇文章主要介紹了JQuery異步提交表單與文件上傳功能,結合實例形式分析了jQuery表單提交及文件傳輸操作的相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-01-01

最新評論