jQuery find – 它返回的元素是什么顺序?

我一直在使用jQuery的find方法,它非常有用。

但是,我遇到了一个例子,其中find似乎是重复的东西,而不是按照它们出现在文档中的顺序返回元素。 (我不确定是否应该这样做 – 我对此表示怀疑)。

但是,它不应该在它找到的元素中有重复并且显示错误的顺序,当然?

完整的例子可以在这里找到: jsFiddle – 注意span [9]和span [10]是如何排列错误并重复的。

为什么会这样?

更新

更新以便将输出写入文档,请使用上面的新链接。

.find()以文档顺序返回元素。 更多信息: http : //docs.jquery.com/Release%3ajQuery_1.3.2

我认为exception与通配符选择器有关。 那些必要吗? 删除它们似乎解决了这个问题。

在代码中添加未使用的*,将此查找替换为您的代码:

 $('#div1').find("*[class=w_line_" + i + "]").each(function () { 

有这个,玩得开心;

我发现命令并不奇怪。

 $(document).ready(function() { for (var i = 1; i <= 10; i++) { console.log(i); $('#div1').find("*[class*=w_line_" + i + "]").each(function() { console.log(i, $(this)); }); } }); 

这个选择器似乎以与你的顺序相同的顺序返回元素,我看不到任何重复。

 $('#div1 *[class*=w_line_' + i + ']')