2011-06-17 50 views
0

我有这样的事情:JQuery的循环数据

$("#btn").click(function (event) { 
       $.getJSON(url, 
       function (data) { 
        // i using this which works fine... 
        //alert(data[0].Id); 
        //alert(data[0].Name); 
        //alert(data[0].Tion); 
        //alert(data[0].Path); 
        //alert(data[0].Flag); 

        //how do i loop here 
        $(data).each(function() { 
         alert(data); 
        }); 

       }); 
      }); 
+0

它给你一个错误或什么?有什么问题? –

+3

在评论中提出你的问题是可爱的,但也非常直观。如果你明确地在代码块之外提问你的问题会更好。 –

回答

1

像这样:

$.each(data, function(idx, dataItem) { 
    alert(dataItem.Id); 
    alert(dataItem.Name); 
    alert(dataItem.Tion); 
    alert(dataItem.Path); 
    alert(dataItem.Flag); 
}); 

或者,更简洁的版本,其中this被自动分配给各个元素data为你:

$.each(data, function() { 
    alert(this.Id); 
    alert(this.Name); 
    alert(this.Tion); 
    alert(this.Path); 
    alert(this.Flag); 
}); 
+0

1+ thanks ...... –

1

使用jQuery.each()[docs]方法,而不是each()[docs]方法,以枚举不是jQuery的对象集合。

$.each(data,function() { 
    alert(this); 
}); 

...或者如果您的集合来自JSON对象,则可以使用for/in声明。

for(var key in data) { 
    alert(data[key]); 
} 

...或者对于JSON数组,使用for语句。

for(var i = 0, len = data.length; i < len; i++) { 
    alert(data[i]); 
} 
0

您可以使用正常for循环。

如果你真的想使用jQuery,你需要调用静态版本:

$.each(data, function(index) { ... }); 
2
 $("#btn").click(function (event) { 
      $.getJSON(url, 
      function (data) { 

       $(data).each(function(index, dataR) { 
        alert(dataR.Id); 
        alert(dataR.Name); 
        alert(dataR.Tion); 
        alert(dataR.Path); 
        alert(dataR.Flag); 
       }); 

      }); 
     }); 
+0

+1我不认为它会向原型'.each()'发送一个非DOM元素的数组,但它似乎确实如此。 – user113716

+0

1+谢谢...... –

+0

@Abu,没问题^ _^ – Neal

0

使用

$.each(data, function(){ 
    alert(data); 
}); 
+0

Hooo好像patrick dw已经在我之前发布了这一秒;) – Tim

0

each函数接受参数,收集迭代,并一个函数。指定的函数可以进一步具有迭代索引以及值。

你的目的,这样的事情应该助阵:

$.each(data, function() { 
    alert(this); 
});