2014-01-18 25 views
1

我想知道jquery是如何真正在內部工作的。例如,我想知道jquery選擇器如何在引擎蓋下工作?它是否遍歷所有的DOM元素?或者它有另一種尋找元素的神奇算法?JQuery如何選擇引擎蓋下的元素?

它與.find()和.filter()函數有什麼不同?

你們有什麼想法嗎?

+0

使用它可以使瀏覽jquery的源代碼變得更加簡單:http://james.padolsey.com/jquery/ – techfoobar

+0

使用源代碼https://github.com/jquery/jquery – Saravana

+0

關於.find()和.filter() :http://stackoverflow.com/questions/2438223/jquery-confusion-in-figuring-out-the-difference-between-find-and-filter –

回答

0

當瀏覽器需要從元素應用樣式規則時,jQuery使用幾乎相同的原則 - 掃描所有元素並檢查CSS中聲明的所有規則。

也是如此的jQuery:

for each element in given subtree/input set do 
    if element matches selector do 
    add element to output set 
    end if 
end for 
return output set 

所以任務已計算的複雜性O(N) 其中N是一個數字輸入DOM元素設置的。

有很多技巧/優化可能,但一般來說 它是如此複雜。

一些jQuery選擇有更糟糕的複雜性,例如該 $("li:has(ul)")選擇具有計算的O(N*N) 複雜所以要謹慎使用。