如何将对象推送到作为数组的jquery data()
对象。我想最终得到包含一个对象数组的数据属性numbers
,我通过循环一些特定类的html来获取。我不明白如何将每个对象推入数组。
我的第一个问题是,如果我在对象中有一些数据,我怎么能看到整个对象。似乎过去我可以做到
$('#div1').data('values', {'one' : 'UNO', 'two' : 'DUE'});
console.log($('#div1').data('values'))
Chrome会给我一些可扩展的对象来查看。现在我只看[object Object]
如果我做的话我还能看到它们
console.log($('#div1').data('values').one)
。
但如果我不确切知道data()
对象中的内容,那似乎有点不方便。检查我是否接近实现这一目标会很有用。
将所有数据分配到各自的对象后,
$(document).ready(function(){
$('#div1').data('values', {'one' : 'UNO', 'two' : 'DUE'});
$('#div2').data('values', {'three' : 'TRE', 'four' : 'QUATTRO'});
$('#div3').data('values', {'five' : 'CINQUE', 'six' : 'SEI'});
$('#div4').data('values', {'seven' : 'SETTE', 'eight' : 'OTTO'});
});
如何循环遍历这些对象(所有对象都使用共享类add
)并将它们包含在data.values
中的对象放入另一个data()
对象中?在这里,我尝试在body
的数据对象numbers
上执行此操作:
`$('body').data('numbers', []);`
这样
$('body').data('numbers') =
['div1': {
'one': 'UNO',
'two': 'DUE'
},
'div2': {
'three': 'TRE',
'four': 'QUATTRO'
},
'div3': {
'five': 'CINQUE',
'six': 'SEI'
},
'div4': {
'seven': 'SETTE',
'eight': 'OTTO'
}]
我的尝试失败了:
$('.add').each(function (index, element) {
$('body').data(numbers, {
element.attr('id'): element.data('values')
//could not understand how to use push here, though it seems likely that's the answer
});
答案 0 :(得分:4)
JavaScript没有关联数组,因此您必须使用Object。然后使用bracket notation作为属性(键)名称:
var values = {};
$('.add').each(function (index, element) {
values[element.id] = $(element).data('values');
});
$('body').data('numbers', values);
关于您的[object Object]
,您可能会在将对象输出到控制台之前意外地与对象进行字符串连接,否则这是Chrome控制台中的错误。
使用数组,您可以使用.push
将项目推送到数组的末尾:
var values = [];
$('.add').each(function (index, element) {
values.push( $(element).data('values') );
});
在数组初始化并存储在元素.data()
中之后,您可以稍后通过抓取对Array对象的引用并在其上调用.push()
来将项目推入其中:
var values = [];
$('.add').each(function (index, element) {
values.push( $(element).data('values') );
});
$('body').data('numbers', values);
$('body').data('numbers').push({'nueve': 'nine'});
//logs "nueve" too as Array/Objects/Functions are passed by reference and the
//previous command pushed an item into the Array object referenced ("stored")
//in the $('body').data('numbers')
console.log( $('body').data('numbers') );