2012-07-10 55 views
0

數據我遇到一些很奇怪試圖重複使用jQuery數據存儲功能的 對象的屬性。jQuery的 - 遍歷存儲對象

這裏是東西(作爲一個例子):

wrapper.data('infos', { 
    label: $('input[name*="label"]').val(), 
    amount: $('input[name*="amount"]').val(), 
    etc.. 
}); 

然後我嘗試使用讀值:

$.each(wrapper.data('infos'), function(k,v) { 
    console.log(k + ' > ' + v); 
}); 

,我得到一個漂亮的輸出,如:

0 > undefined 
1 > undefined 
... 
239 > undefined 

如果我輸出這個對象,我可以毫無困難地讀取屬性。 它與jQuery緩存或某事有關嗎?

+0

你可以把執行console.log(wrapper.data( '的相關信息'))的輸出引擎收錄或的jsfiddle? – Hardik 2012-07-10 10:02:22

+1

你使用的是什麼版本的jQuery?這符合我的預期(http://jsfiddle.net/27dCJ/)(jQuery 1.7.2)。我還會考慮加入一個顯示問題的jsFiddle * live *。 – Matt 2012-07-10 10:02:46

+0

選中此[示例](http://jsfiddle.net/2kW29/)。 – 2012-07-10 10:13:10

回答

0

因爲你的對象有一個length屬性,它被作爲interpeted一個數組,在1.7.2至少,無論它是一個數組或不通過決定:

length = obj.length,    
isObj = length === undefined || jQuery.isFunction(obj); 

所以,你要麼;

  1. 打電話給你length財產別的
  2. 使用for/in環代替。

    var data = wrapper.data('infos') 
    
    for (var x in data) { 
        if (data.hasOwnProperty(x)) { // omit properties from the prototype chain 
         console.log(x + ' > ' + data[x]); 
        } 
    } 
    
+0

我寧願使用for/in循環,它完美的作品在我的情況。 非常感謝,你真的幫助我了! – anael 2012-07-10 10:36:06