我是jquery / javascript的新手。我有以下代码:
var Tabs = {
'tab1' : 'string1',
'tab2' : 'string2',
'tab3' : 'string3'
}
$.each(Tabs,function(i,j){
var tmp = $('<li><a>'+i+'</a></li>');
tmp.find('a').data('page',j);
})
我希望我的代码是这样的,但是当我尝试它时,遗憾的是它不起作用:
var Tabs = {
'tab1' : 'string11' : 'string12',
'tab2' : 'string21': 'string22',
'tab3' : 'string31' : 'string32'
}
$.each(Tabs,function(i,j,k){
var tmp = $('<li><a class="'+k+'">'+i+'</a></li>');
tmp.find('a').data('page',j);
})
换句话说:我想在Tabs数组中添加第三个参数。有人可以向我解释:
的作用是什么。你平常的帮助是值得赞赏的。
答案 0 :(得分:4)
JavaScript对象文字中的一般模式是
var object = {
key: value,
key: value
// ...
};
因此您的对象分配无效。此外,传递给each()
的回调只有两个参数:index
和value
。所以你不能只在那里使用第三个参数。
但是,您可以使用数组(或其他对象)作为这样的值:
var Tabs = {
'tab1' : ['string11', 'string12' ],
'tab2' : ['string21', 'string22' ],
'tab3' : ['string31', 'string32' ]
}
$.each(Tabs,function(i,j){
var tmp = $('<li><a class="'+j[1]+'">'+i+'</a></li>');
tmp.find('a').data('page',j[0]);
})
答案 1 :(得分:1)
您可以将key:string转换为key:object对。然后,您可以拥有任意数量的值。它会是这样的:
var Tabs = {
'tab1': {
value1: 'string1',
value2: 'string12'
},
'tab2': {
value1: 'string2',
value2: 'string22'
},
'tab3': {
value1: 'string3',
value2: 'string32'
}
}