-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 数组添加第三个参数。有人可以向我解释 . 的作用是什么:。我们非常感谢您的日常帮助。

4

2 回答 2

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]);
})
于 2013-05-05T13:58:02.833 回答
1

您可以将 key:string 转换为 key:object 对。然后,您可以拥有任意数量的值。它会是这样的:

var Tabs = {
    'tab1': {
        value1: 'string1',
        value2: 'string12'
    },
    'tab2': {
        value1: 'string2',
        value2: 'string22'
    },
    'tab3': {
        value1: 'string3',
        value2: 'string32'
    }
}
于 2013-05-05T13:56:42.427 回答