2012-02-07 29 views
13

說,例如,我有一個排序列表:jQuery是否總是按照在代碼中找到的順序遍歷DOM?

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

我想知道的是,如果我做一個jQuery調用,如以下幾點:

$.each($('li'), function(key, item) {...});

我可以期待jQuery從上到下瀏覽條目?我已經運行了一些測試,並嘗試使用jQueryUI動態重新排列項目,到目前爲止,它似乎總是按順序運行。但是,這可以預期嗎?或者說,我沒有碰到任何東西,讓我覺得其他方面沒有遇到麻煩......?

+2

It * should *。然後再次,瀏覽器總是設法插入奇怪的錯誤... – 2012-02-07 19:38:20

回答

11

「我可以期待jQuery從上到下瀏覽條目嗎?」

是的。它們由從0length - 1的數字索引迭代。

元素將始終以它們出現在DOM中的順序返回。

「我已經運行了一些測試,並試圖重新安排項目動態...」

它沒有兼顧CSS定位,如果這就是你的意思。如果您在DOM中更改其實際位置,則只有在您從DOM重新選擇更新時纔會看到更新。

+0

似乎jQueryIU可滾動實際重新定位文檔中的DOM。理想的最終結果是不必分配實際的排序屬性,並在用戶排序DOM後以正確的順序信任jQuery – 2012-02-07 19:50:02

+1

@KyleMacey我依靠jquery將它們按正確的順序返回給我的幾個應用程序,而沒有任何問題。 – 2012-02-07 19:53:26

+0

@KevinB。請注意,jQuery沒有保證它必須被訂購... – gdoron 2012-02-07 19:57:14

4

它沒有用到,但因爲jQuery 1.3.2選擇器按它們在DOM中的發現順序返回元素。

3

在承諾此行爲的文檔中沒有任何地方,但是這是它當前實施的方式。

這就是說,我看不出他們爲什麼會改變這種行爲。

+3

他們提到了1.3.2發行說明中的​​更改,我不確定這是否足以讓您產生一種溫暖的模糊,但他們打算與[選擇器API]兼容(http://www.w3.org/TR/selectors-api /),它指定以DOM順序返回元素。 – 2012-02-07 20:01:13

+0

@PaoloBergantino好了。 – 2012-02-07 20:02:36

+1

+1公平點。如果這是他們的意圖,他們應該在文檔中確定這一點。 – 2012-02-07 20:06:01