2009-11-09 94 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出現在你的列表中,它更容易識別。