如何知道遍歷DOM的內容?關於jQuery選擇器如何遍歷dom的一些問題
$('div p')
看起來這將返回所有的div元素,然後再執行另一次掃描爲在第一個div搜索返回的每個DOM元素的P元素。
$('div .foo')
這個班級似乎沒有掃描dom。它們只爲包含foo類的元素過濾前面的列表$('div')。如果$('div')的孩子擁有foo類,它就不會被選中。
$('div, div')
不包含愚蠢。所以它似乎只用一個lambdas列表掃描一次,不管是比較還是不匹配。但是當你有如下的過濾器時,這會變得非常混亂:contains('x')看起來好像他們可以自己遞歸dom。
那麼這些選擇器如何工作? 'div .foo'是否只針對div進行遍歷,然後對包含foo的類進行過濾,或者以某種方式將其轉化爲計算,說明標記== Div & & class == foo。什麼時候有多個選擇器?他們按照他們出現在頁面上的順序出現,沒有任何愚蠢的行爲,讓我覺得它只能掃描一次dom。也許它只是在返回之前對它們進行分類和刪除?
從技術上講,'$(div .foo)'所做的是查找所有'.foo'元素,然後過濾那些'div'。 – Blazemonger
至於獨特的結果 - 看看https://github.com/jquery/jquery/blob/master/src/traversing.js#L40。 – pimvdb
@ mblase75 NO !!它檢查DIV元素中的所有類foo! – TeChn4K