当只有一个项目循环时,$ .each()不起作用?

时间:2010-12-26 15:36:24

标签: jquery getjson each

我对某些getJSON结果进行了每次方法调用:

    if(data && data.query && data.query.results)
    {                
        $.each(data.query.results.span, function(i, item)
        {
            console.log("Content:" + item.content); // FAILS --> UNDEFINED!!
         });
    }

我无法弄清楚为什么即使我看到JSON返回单个结果也不会显示任何内容。

所以我删除了每个并做了这个:

    if(data && data.query && data.query.results)
    {
            console.log("Content:" + data.query.results.span.content); // WORKS!!
    }

现在可行。

当只有一个结果时,是否无法使用each()

3 个答案:

答案 0 :(得分:8)

$.each期望第一个参数中有一个数组,如下所示:

$.each([ data.query.results.span ], function(i, item) { ... } 

应该有效。方括号创建单个项目数组。

答案 1 :(得分:1)

如果$.each()的第一个参数不是数组,那么它将遍历对象的属性(缺少更好的术语)。

例如:

var a = {first: "abc", second: "def"};
$.each(a, function(i, item){...});

传入$.each的函数将被调用两次。第一次,我将是“第一次”,项目将是“abc”。第二次我将是“第二次”,项目将是“def”。

答案 2 :(得分:0)

如果集合已经是一个对象数组,则首先双重检查该集合。 如果没有,请将您自己嵌套的变量覆盖为对象数组:

if (MyCollection[0]==undefined) MyCollection = [MyCollection];
$.each(MyCollection, function (key,item) { ....