2013-05-05 86 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