2013-07-29 52 views
1

如果,CSS,我們有:jQuery的兒童()從右到左讀嗎?

#divitis>* 

所以我相信,它(瀏覽器)將開始讀取所有元素,然後,檢查#divitis元素,因此,它會從離開

cf. Why do browsers match CSS selectors from right to left?

我的問題是:

有誰知道如果children() jQuery函數工作方式類似,當我們這樣做:

$('#divitis').children() 

將它的工作權利到左:

  1. 檢查孩子孩子的所有元素;
  2. 檢查所有屬於孩子的元素;
  3. 檢查所有屬於孩子的元素;
  4. 抓住#divitis的第一個孩子;

或者,從左至右依次爲:

  1. 掃描的所有元素,並從#divitis搜索;
  2. 掃描子宮炎的第一個孩子;

在此先感謝。

+0

這恐怕不太清楚你在問什麼。 – BenM

+1

'children()'不是選擇器。你的意思是說你想從右向左讀? – Jivings

+3

我不知道從左到右的方向(因爲DOM是從上到下排列的),但是一些快速測試會表明它是自頂向下(DOM的自然流動)。 –

回答

0

.children()只會看你的選擇器的直接孩子。 您需要的是.find()而不是我的經驗,它將按照「按順序」遍歷DOM樹,所以從「從左到右」表示直接的孩子,然後是孩子的孩子,等等。

增添了些許的jsfiddle澄清:http://jsfiddle.net/qbG7x/

0

在你的情況下,你已經寫$('#divitis').children(),你實際上有兩個不同的選擇,即#divitis> *

但是,因爲嚴格按照正常評估順序嚴格遵循兩個jQuery函數調用,所以將首先評估#divitis選擇器,然後再評估> *

因此,這是對面爲了如果這已被寫爲只包含#divitis > *單個選擇器。

也就是說,瀏覽器進入R-> L而不是L-> R的原因在這裏並不適用。

應用CSS樣式表時,根據每個選擇器的最右側元素而不是最左側元素跳過不匹配CSS樣式表的單個規則會更有效。

但是,在這裏,你是以編程方式「編寫單一規則」,所以沒有「其他規則」需要跳過。

+0

我還是不明白,對不起。你說瀏覽器之所以走R-> L而不是L-> R並不適用。但是你也會說''('#divitis> *')'和'$('#divitis')。children()''是相反的順序,最後我沒有得到它是否工作不同的不是。對不起,我不熟練英語。在第一杯時,我會說'#divitis> *'可能會比$('#divitis')慢。children()' – MEM

+0

@MEM將會是我的評估 - '#divitis> *'比'#divitis .children()'。 R-> L順序可以讓瀏覽器輕鬆拋棄不匹配的CSS規則。在一行jQuery代碼中,沒有「不匹配」的規則,只有一個「規則」。 – Alnitak