2013-05-05 89 views
-2

我是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数组的第三个参数。有人可以向我解释:的作用是什么。你通常的帮助是alwys赞赏。

+0

每'Tabs'条目应该成为阵列,例如''tab1':['string11','string12']',那么你应该重复它。 – moonwave99 2013-05-05 13:57:25

+0

谢谢moonwave99的帮助。关于JavaScript对象和数组,请参阅okey – 2013-05-05 14:00:28

+0

。不难找到很多基本信息 – charlietfl 2013-05-05 14:01:07

回答

4

在JavaScript对象文字的一般模式是

var object = { 
    key: value, 
    key: value 
    // ... 
}; 

所以你的对象分配无效。此外,传递给each()的回调仅有两个参数:indexvalue。所以你不能只使用第三个参数。

你可以,但是,使用的阵列(或另一物体),为这样的值:

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]); 
}) 
+0

完美,Sirko回来了 – 2013-05-05 13:59:24

1

您可以将key:string转换为key:object pair。然后,您可以拥有尽可能多的值。这将是这样的:

var Tabs = { 
    'tab1': { 
     value1: 'string1', 
     value2: 'string12' 
    }, 
    'tab2': { 
     value1: 'string2', 
     value2: 'string22' 
    }, 
    'tab3': { 
     value1: 'string3', 
     value2: 'string32' 
    } 
} 
+0

非常感谢你的帮助 – 2013-05-05 13:59:58