我在尝试迭代存储对象的属性时遇到了一些非常奇怪的事情 使用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 :(得分:0)
因为你的对象有一个length
属性,所以它作为一个数组被插入,至少在1.7.2中,它是否是一个数组是通过以下方式确定的:
length = obj.length,
isObj = length === undefined || jQuery.isFunction( obj );
所以你应该;
length
财产称为其他内容改为使用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]);
}
}