2013-10-21 42 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()