2013-10-21 39 views
-2

我有以下代码:如何迭代数据?

$.ajax({ 
    url: (path+args), 
    type: "POST", 
    success: function(data){ 
     // do stuff with "data" 
    } 
}); 

如果数据如下所示:

<div id="imageList"> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
    <div class="image"></div> 
</div> 

我怎样才能通过具有的div数据迭代?

+1

你张贴了这个'http://stackoverflow.com/questions/19485749/how-can-i-loop-through-all-divs-by-id-in -jquery'几分钟前 – coolguy

+0

不,它不同。仔细观察。 – rotaercz

+0

你在这里指的是什么数据? div或div的值(这里没有提到) – Hariharan

回答

3

如果您有什么服务器返回的控制,我可能会发JSON回浏览器–类似:

[ 
    { url: "a.png" }, 
    { url: "b.png" } 
] 

。 ..这可以很容易地做到像for (var i = 0; i < data.length; i++) data[i].url。也就是说,如果您无法控制服务器返回的内容,则可以使用返回的数据创建一个片段,并使用普通的jQuery方法。

$(data).children('.image').each(function() { 
    var url = $(this).children('img').attr('src'); // or whatever 
}); 

这工作,因为经过HTML的jQuery的字符串来创建DocumentFragment,解析字符串中的HTML和建立一个“迷你DOM”。返回的jQuery对象选择该DOM的顶级元素(在本例中为div#imageList),并且可以自由地遍历片段DOM。

在我的示例中,我选择#imageList的子类image,然后遍历每个选定的元素。

+0

json方法更快吗? – rotaercz

+0

绝对。使用DOM的规则之一:[DOM非常慢*](http://stackoverflow.com/a/11925491/201952)浏览器具有本机JSON解析器('JSON.parse()'),并且在数组上循环的纯JS'非常快。 – josh3736

1

你可以做这样的事情

$(data).children('div').each(function(){ 
$(this).doSomething(); 
}) 
0

也许是这样的:

$.each($('#imageList'), function(i, imageList) { 
    $('div', imageList).each(function() { 

    }); 
}) 

or could use something like: 

$("#imageList").children().each()