如何使用jQuery增加索引值

时间:2014-03-17 11:25:56

标签: javascript jquery html json

服务器以

格式返回JSON
"games": [{
    "gameType": "RPG",
    "publishers": [{
        "publisher": "Square",
        "titles": [{
            "title": "Final Fantasy",
            "gameReleases": [ 2006, 2008, 2010, 2012, 2013, 2014 ]
        }]
    }]
}]

我没有编号索引需要在代码中填充下拉列表,并且我试图通过Jquery动态添加。

因此,如果选择了RPG,这将等于1,如果下一个项目是策略,则这将是数字2等。这将帮助我动态地将项目传递给pluck命令:

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();

所以它是这段代码中的索引,我需要增加一个值。尝试使用循环和_.each但没有运气。

由于

编辑: 只是为了扩展评论 - 当我输出索引到控制台似乎工作时,下拉列表中的每个项目都有一个索引值,然后当我从下拉菜单中选择一个项目时输出到控制台的值对于该选择是正确的。 但是,只要我将其作为变量传递给:

var getGameType = _.pluck(jsonData.gameType[i].publishers, 'publisher');

我收到错误,有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用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');

答案 1 :(得分:1)

var index = 0; //global variable
var subGame = _.pluck(jsonData.games, 'gameType');
var gameType = _.map(subGame , function (val) {
return '<option value="' + index++ + '">' + val + '</option>';
}).join();

答案 2 :(得分:1)

考虑到你正在使用jQuery,你可以在回调函数中使用each方法和两个参数 - 第一个是索引:

$.each(games, function(idx, obj) {
    //now idx is your index
    //and obj is the object corresponding to your index
});