【问题标题】:jQuery - $.each loop through variable objectjQuery - $.each 循环通过变量对象
【发布时间】:2009-12-15 19:08:09
【问题描述】:

我正在使用具有多个高级对象的 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)尝试文字值,则循环正常工作。

有什么想法吗?谢谢

【问题讨论】:

  • 2 个问题:select 是在哪里定义的?另外,您认为可以使用.each 迭代的val() 返回的值是多少?
  • 你遇到什么样的错误?
  • select 只是一个指向选择下拉列表的变量。对不起,我没有澄清这一点。 activeList 成功返回下拉列表的选定值。我已将相关代码添加到问题中。我收到指向 jquery 库的错误“G 未定义”。这是我尝试遍历 JSON 数据中不存在的对象时遇到的错误。

标签: jquery json object loops


【解决方案1】:

你的意思是你有这样的情况吗?

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

【讨论】:

    【解决方案2】:

    我不完全确定您在这里尝试做什么,但是,您的示例代码看起来很笨拙,所以也许您正在寻找这样的答案:

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

    这将创建一个 :selected 值的列表。如果不是,请澄清问题。

    【讨论】:

    • 我确实没有提供足够的信息。 activeList 返回选择下拉列表的选定值。 activeList 的值将对应于我希望循环的 JSON 对象。
    【解决方案3】:

    $().val() 返回找到的第一个值,如果你想将它作为一个数组,你必须自己循环选择的输入

    【讨论】:

    • activeList 变量返回我想要的值——所选选项的值。该值与 JSON 数据中的对象名称相对应——我想遍历相应的对象。问题是当我尝试遍历 data.activeList 时,它似乎是在尝试遍历不存在的 activeList 对象,而不是使用 activeList 的值。
    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多