jQuery - 遍历数据存储对象

时间:2012-07-10 09:58:39

标签: 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缓存有关吗?

1 个答案:

答案 0 :(得分:0)

因为你的对象有一个length属性,所以它作为一个数组被插入,至少在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]);
        }
    }