1
我正在尋找有關Sizzle(jQuery)在內部運行選擇器時會做什麼的信息。理想情況下,要麼是完成了關於不同瀏覽器或處理方式的撰寫/博客文章的人,還是能夠爲各種瀏覽器解編選擇器的網站。具體來說,我有一個團隊,這是說的代碼我寫的是在非常大的數據集鎖定了IE7:尋找有關jQuery選擇器引擎(sizzle)的內部實現的信息
.find('.row:not(.row-0) .col-' + colN + ':not(.forbid-transfer)')
而且它更改爲:
.find('.row:not(.row-0) .col-' + colN).filter(':not(.forbid-transfer)')
修復的速度問題。
對我來說這是一個完整的跆拳道,因爲我認爲這兩個是在發動機內是相同的,但顯然事實並非如此。請注意,一切內的父容器是一個div,所以改變這個div.row... div.col....
不應該加速任何事情。
無關,但如果您發現性能沒有差異,我會推薦使用'.not()'而不是'filter(「:not()」)' – meagar
*「我有一個團隊正在說代碼I寫的是在非常大的數據集上鎖定IE7「*步驟1:單獨複製你自己。我不得不承認我很難相信它。如果它不是選擇器中較早的':not',我會在某些瀏覽器上相信它,因爲如果不使用任何特殊的僞類,Sizzle將會遵循'querySelectorAll'。但是IE7沒有'querySelectorAll',並且你在其他地方使用':not',所以... –
主要區別在於,在第一種情況下,瀏覽器將對更多元素進行雙類名測試,第二,因爲(我認爲)它從右向左工作。因此它會在檢查元素是否具有正確類型的「行」父元素之前檢查「.col-n」類和「禁止傳輸」類。在第二種情況下,在候選人名單被剔除之前,它不必擔心「禁止轉讓」。 – Pointy