2012-02-07 25 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