jQuery $ .each()没有像预期那样处理对象

时间:2011-10-19 13:13:21

标签: javascript jquery

我有以下对象:

var objectVar = {
    4 : { "key" : "key-name4", "item4" : {} },
    3 : { "key" : "key-name3", "item3" : {} }
}

然后我尝试以下方法:

$(objectVar).each(function(index,record){
    console.log(record); // Loops Only Once and Logs Full Object
});

任何人都可以帮我解释为什么$ .each();函数inst迭代主对象中的子对象吗?

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:9)

  

“任何人都可以帮我解释为什么$ .each();函数会迭代主对象中的子对象吗?”

要循环子对象,需要子循环。

虽然像你一样使用each()[docs]方法,通常有时会工作(就像现在这样),但它实际上是指DOM元素。

而是使用jQuery.each()[docs]方法:

$.each( objectVar, function(index,record){
    console.log(record); 

      // start a loop on the current record in the iteration
    $.each( record, function( index2, sub_record ) {
        console.log( index2, sub_record );
    });
});

现在,您的循环将扩展到第一级嵌套对象。

如果您不确定整体结构,并希望枚举整个深度,则需要测试遇到的每个值,看看是否应该枚举。

答案 1 :(得分:3)

$.each(objectVar,function(index,record){
    console.log(record);

});

答案 2 :(得分:3)

您应该使用$.each方法而不是.each方法:

$.each(objectVar, function(index, record) {
  console.log(record);
});

答案 3 :(得分:2)

虽然jQuery很棒,但你真的没有使用它。循环遍历对象的JavaScript非常简单:

var record;
for(var key in objectVar) {
    record = objectVar[key];
}

答案 4 :(得分:1)

您对非jQuery对象使用$.each()错误:

$.each( objectVar, function( index, record ){
    console.log( record );
});

jQuery.each()