jQuery - $ .each循环遍历变量对象

时间:2009-12-15 19:08:10

标签: jquery json object loops

我正在使用具有多个高级对象的JSON数据集。如果我确实声明了对象名称,我可以毫无困难地遍历JSON,但是当我在其中使用变量时,我会收到错误。它似乎正在尝试将变量名称应用为对象的文字名称。这是一个简单的例子

function(data){
    var select = $('#lists select');
    var activeList = $(select+':selected').val();

    $.each(data.activeList, function(i,item){
      // Do stuff    
    });
}

在这种情况下,如何让它使用activeList的值?要清楚,变量activeList正确返回所选选项的值。如果activeList的值为“Christmas_List”,则循环遍历data.activeList应循环遍历JSON数据中的Christmas_List对象。这不起作用,似乎data.activeList正在寻找“activeList”对象。如果我在activeList的位置(Christmas_List)尝试文字值,则循环正常工作。

有什么想法吗?感谢

3 个答案:

答案 0 :(得分:10)

你是说你的情况是这样的吗?

$(function() {
    var test = { Foo : [ 1, 2, 3], Bar : [4, 5, 6] }; // Your JSON object
    var prop = "Foo"; //Your select list value
    $.each(test[prop], function() { alert(this); });
});

在这种情况下,您希望按键访问对象....

test[prop]

而不是直接

test.prop; 

答案 1 :(得分:2)

我不完全确定你在这里要做什么,但是,你的示例代码看起来很尴尬,所以也许这样的东西就是你要找的答案:

activeList = []
$(select+":selected").each( function(item) {
    activeList.append( $(item).val() )
});

这将创建一个:所选值的列表。如果没有,请澄清问题。

答案 2 :(得分:1)

$()。val()返回找到的第一个值,如果你想将它作为一个数组,你必须自己遍历选定的输入