jQuery 選擇器效率
原文地址:http://www.cnblogs.com/aaronjs/p/3337531.html
ID > Tag > Class
- ID 選擇器是速度最快的,這主要是因為它使用 JavaScript 的內建函式
getElementById()
; - 其次是型別選擇器,因為它使用 JavaScript 的內建函式
getElementsByTag()
; - 速度最慢的是
Class
選擇器,其需要通過解析 HTML 文件樹,並且需要在瀏覽器核心外遞迴,這種遞迴遍歷是無法被優化的。
選擇器效能優化建議
- 儘量使用 ID 選擇器
- 少直接使用
Class
選擇器,儘量結合Tag
使用,如input.myclass
- 多用父子關係,少用巢狀關係
- 快取 jQuery 物件
- 鏈式呼叫
效能分析
1 > 2 > 3 > 4 > 5 > 6
$parent.find('.child') // 1
$('.child', $parent) // 2
$('.child', $('#parent')) // 3
$parent.children('.child') // 4
$('#parent > .child') // 5
$('#parent .child') // 6
-
這條是最快的語句。
.find()
方法會呼叫瀏覽器的原生方法(getElementById,getElementByName,getElementByTagName
等等),所以速度較快。 -
給定一個DOM物件,然後從中選擇一個子元素。jQuery會自動把這條語句轉成
$.parent.find('child')
,這會導致一定的效能損失。它比最快的形式慢了5%-10%。 -
jQuery內部會將這條語句轉成
$('#parent').find('.child')
,比最快的形式慢了23%。 -
這條語句在jQuery內部,會使用
$.sibling()
和javascript的nextSibling()
方法,一個個遍歷節點。它比最快的形式大約慢50% -
jQuery內部使用Sizzle引擎,處理各種選擇器。Sizzle引擎的選擇順序是從右到左,所以這條語句是先選
.child
,然後再一個個過濾出父元素#parent,這導致它比最快的形式大約慢70%。 -
這條語句與上一條是同樣的情況。但是,上一條只選擇直接的子元素,這一條可以於選擇多級子元素,所以它的速度更慢,大概比最快的形式慢了77%。
相關文章
- jQuery選擇器jQuery
- jQuery 選擇器jQuery
- jQuery選擇器之層次選擇器jQuery
- jQuery選擇器(下)jQuery
- Jquery的選擇器jQuery
- jQuery選擇器介紹:基本選擇器、層次選擇器、過濾選擇器、表單選擇器jQuery
- jquery九大選擇器jQuery
- jquery中的選擇器jQuery
- jQuery 選擇器彙總-思維導圖-選擇器jQuery
- jQuery入門-DOM/$/選擇器jQuery
- 關於jQuery中的選擇器jQuery
- jQuery原始碼剖析 (二) - 選擇器jQuery原始碼
- jQuery第二章選擇器jQuery
- 初學jQuery(表單選擇器)jQuery
- jQuery的基礎操作——選擇器jQuery
- JQuery知識總結之選擇器jQuery
- css中:not()選擇器和jQuery中.not()方法CSSjQuery
- jQuery 原始碼學習 (六) 選擇器jQuery原始碼
- Jquery基礎筆記二(選擇器)jQuery筆記
- JQuery基礎28_選擇器2jQuery
- jQuery基礎——樣式篇 (選擇器)jQuery
- 如何選擇jquery版本jQuery
- jquery九大選擇器的用法舉例jQuery
- HTML DOM querySelectorAll() 代替 jquery的 $('') CSS選擇器HTMLjQueryCSS
- 002---選擇器(標籤選擇器、類選擇器、id選擇器、偽類選擇器、萬用字元選擇器)字元
- 4月10日學習筆記——jQuery選擇器筆記jQuery
- 不是吧!! ! jQuery選擇器,你要的都在這!!!jQuery
- JQuery版本選擇與下載jQuery
- jQuery操作checkbox選擇程式碼jQuery
- jQuery有選擇性的禁止文字選中jQuery
- jQuery基本篩選選擇器使用指南jQuery
- 使用json和jquery級聯選擇JSONjQuery
- CSS3新增選擇器(屬性選擇器、結構偽類選擇器、偽元素選擇器)CSSS3
- 選擇器
- jQuery 對基本選擇符的運用jQuery
- CSS選擇器CSS
- 【譯】使用這些 CSS 屬性選擇器來提高前端開發效率!CSS前端
- 淺談邏輯選擇器 -- 父選擇器它來了!