服务器返回格式为
的JSON"games": [{
"gameType": "RPG",
"publishers": [{
"publisher": "Square",
"titles": [{
"title": "Final Fantasy",
"gameReleases": [ 2006, 2008, 2010, 2012, 2013, 2014 ]
}]
}]
}]
没有编号索引,我需要在代码中填充下拉,我试图通过Jquery动态添加。
如果选择了RPG,这就等于1,如果下一个选项是策略,这就等于2,等等。这将帮助我动态地将项传递给拔命令:
var i = $('gametypecombo').attr('value');
var getGameType = _.pluck(jsonData.gameType[i].publishers, 'publisher');
我该如何添加索引到项目,以实现这一点。我当前填充gameType下拉菜单的代码是:
var subGame = _.pluck(jsonData.games, 'gameType');
var gameType = _.map(subGame , function (val) {
return '<option value="' + index + '">' + val + '</option>';
}).join();
这是代码中的索引,我需要它是一个递增的值。尝试使用循环和_。每个人都有,但运气不好。
感谢编辑:只是为了扩展评论-当我输出索引到控制台时,它似乎工作,下拉菜单中的每个项目都有一个索引值,然后当我从下拉菜单中选择一个项目并将其输出到控制台时,该值对于该选择是正确的。但是,一旦我将其作为变量传递给:
var getGameType = _.pluck(jsonData.gameType[i].publishers, 'publisher');
我得到错误,有什么建议吗?
var index = 0; //global variable
var subGame = _.pluck(jsonData.games, 'gameType');
var gameType = _.map(subGame , function (val) {
return '<option value="' + index++ + '">' + val + '</option>';
}).join();
考虑到您正在使用jQuery,您可以在回调函数中使用带有两个参数的each
方法-第一个将是index:
$.each(games, function(idx, obj) {
//now idx is your index
//and obj is the object corresponding to your index
});
您可以使用data-*
属性来存储索引,并使用.data()
来获取索引
var subGame = _.pluck(jsonData.games, 'gameType');
var gameType = _.map(subGame, function (val, i) {
return '<option value="' + index + '" data-index="' + i + '">' + val + '</option>';
}).join();
然后var index = $('gametypecombo').find('option:selected').data('index')
var i = $('gametypecombo').val();
var subGame = _.pluck(jsonData.games, 'gameType');
var getGameType = _.pluck(subGame.publishers, 'publisher');