如何使用jQuery增加索引值



服务器返回格式为

的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');

最新更新