0

在尝试迭代使用 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缓存或其他什么有关吗?

4

1 回答 1

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]);
        }
    }
    
于 2012-07-10T10:26:03.730 回答