2009-11-09 135 views
1

如果你有超过1个(动态)文本框具有相同的类名,并使用jQuery来遍历每个文本框,你能否假设文本框的选择顺序是相同的每次?jquery。每个迭代

实施例:

文本框1个值= 1个 文本框2值= 2 文本框中值= 3

$(".textboxes").each(function(){ 
    alert($(this).val()); 
}); 

将它总是以相同的次序每次打印这些值?

回答

8

循环从头到尾开始,如果大于0,则从0开始到最大长度,所以如果您提供了一个html选择符(它将按照它们的顺序来拾取元素在结构/标记中定义)。

但是,如果您直接向$ .each提供一个对象,因为没有标准的方式或规则来规定排序应该如何,所以通常它会按我为大多数解释器定义的顺序排列,但口译员并不真正服从这个“规则”。

each: function(object, callback, args) { 
    var name, i = 0, length = object.length; 

    if (args) { 
     if (length === undefined) { 
      for (name in object) 
       if (callback.apply(object[ name ], args) === false) 
        break; 
     } else 
      for (; i < length;) 
       if (callback.apply(object[ i++ ], args) === false) 
        break; 

正如你所看到的第二个循环是实际执行的循环。

+0

非常感谢! – korvirlol 2009-11-09 02:52:19

+0

当然,如果您找到正确的解决方案,请不要忘记检查标记:P – 2009-11-09 03:02:33

1

jQuery将得到由上到下,始终以同样的方式的元素,所以为了将是相同的,每次

-3

应该什么关系?如果你正在编写一个.each函数,你应该对每个元素都做同样的事情。否则,你应该使用其他方法。因此,元素出现的顺序可能不重要,如果是这样,您可能已经发现了代码异味。

如果你正在寻找一种方式来分别识别列表中的每个元素,你可以尝试使用其ID,例如:

alert($(this).id + ": " + $(this).val); 

这样做的好处是,如果预期没有按元素” t出现在你的列表中,它更容易识别。