2011-08-07 54 views
2

如何使用jquery $ .each()方法迭代對象文字數組?

在chrome調試器中,它返回爲「undefined,undefined」。

任何幫助將非常感激。謝謝!

var links = [ 
        { className : 'hover', url : 'http://www.yahoo.com' }, 
        { className : 'hover-2', url : 'http://www.foxnews.com' }, 
       ]; 


    loopy(links) 


    function loopy(obj){ 

     $.each(

      obj, 

      function(){ 

       console.log(obj.className + ', ' + obj.url); 

      }     

     ); 
    } 

回答

6

嘗試:

$.each(
     obj, 
     function(i, val){ 
      console.log(val.className + ', ' + val.url); 
     }     
    ); 

$.each的功能參數有兩個參數 - 當前項的索引陣列中,並且第二個是該陣列的實際電流值。

查看API瞭解更多解釋和示例。

你可以看到這fiddle看到它的行動。

+0

它的工作!非常感謝!對此,我真的非常感激! – cpeele00

+0

+1的解釋,如果只有人不費力地檢查jQuery文檔... – Mrchief

+0

@Mrchief - 謝謝! –

0

我只是想提供大衛的迴應略加修改處理較大的物體時,這將是對DOM多了幾分溫柔。

原來的答覆(見上文):

$.each(
    obj, 
    function(i, val){ 
    console.log(val.className + ', ' + val.url); 
    }     
); 

此解決方案,但它產生的迭代器功能的一個全新的實例對象中的所有屬性。這是沒有必要的,我想通過聲明特定的方法來處理這類事情,你會發現在更大的應用程序中更穩定的性能。

試試這個:

// Process a property in your link object 
function links_iterationHandler(i, val) { 
    console.log(val.className + ', ' + val.url); 
} 

// Traverse the link object and pass each result off to the method above 
$.each(obj, links_iterationHandler); 

這基本上做同樣的事情,但在DOM不捶一樣多。如果你的對象只有幾件物品,這並不重要。但是,如果你正在處理大量數據,比如通過Ajax加載的大型記錄集,它肯定會有所作爲。

乾杯!