最佳化jQuery選取器

來源:互聯網
上載者:User

標籤:

最佳化jQuery選取器

選擇最佳化比以前更加重要,因為越來越多的瀏覽器實現了queryselectorall()並承擔了將jQuery選取器轉移到瀏覽器的責任。記住這些小技巧可以讓你輕鬆突破學習選取器時的瓶頸。

jQuery 擴充

如果可能的話,避免使用jQuery延伸選取器。這些擴充無法在效能讓原生的queryselectorall() DOM提供的方法更有效,所以還是用jQuery提供的常規選取器吧。

12345 // Slower (the zero-based :even selector is a jQuery extension)$( "#my-table tr:even" ); // Better, though not exactly equivalent$( "#my-table tr:nth-child(odd)" );

記住,許多jQuery的擴充,包括在上面的例子中的:even,沒有在CSS規範準確的對應。在某些情況下,這些擴充的方便性可能會超過其效能成本。

避免過度使用選取器
1234 $( ".data table.attendees td.gonzalez" ); // Better: Drop the middle if possible.$( ".data td.gonzalez" );

減少DOM節點同樣可以提高選取器的效率,因為這樣可以使尋找元素時減少遍曆的層數。

ID選取器

使用以ID選取器開始的選取器確保萬無一失。

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

第一種方法 DOM 使用document.querySelectorAll(). 第二種方法 jQuery 使用效率更高的document.getElementById(), 儘管提高的效率會受後續的.find()的影響。

關於老版本的瀏覽器

使用就瀏覽器比如ie8或ie8-時有必要考慮一下建議

明確選取器

右邊的選取器儘可能明確,左邊的不用。

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

如果可能的話,在你的右邊選取器使用tag.class形式,左邊使用tag或.class。

避免使用通用選取器

通用選取器放在任何地方效率都不高。

123456 $( ".buttons > *" ); // Extremely expensive.$( ".buttons" ).children(); // Much better. $( ":radio" ); // Implied universal selection.$( "*:radio" ); // Same thing, explicit now.$( "input:radio" ); // Much better.

最佳化jQuery選取器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.