2011-12-29 66 views
4

我有以下代碼:突破.each()jquery語句的最佳方式是什麼?

$.each(data.People, function (i, person) { 
    html.push("<img title='" + person.Name + "' height='45' width='45' src='" + person.Picture + "' /> "); 
     }); 

我想改變這個代碼,所以如果數組(data.People)有20餘人,它會做什麼它上面做的第20人,那麼只是顯示文字說「X」更多的人......因此,例如,如果該陣列有100個人,它會顯示前20個,然後只是說「80多個人......」。

我假設我需要在每個陳述裏面有一些計數器,但是希望看到最好的方式來突破這個並且顯示剩餘的文本。

+0

你想這個 「80後更多的人。」人們可點擊以便如果用戶點擊你顯示下一個20或者你只是想它作爲一個文本? – 2011-12-29 18:41:50

+0

可能的重複[如何擺脫JQuery的每個循環](http://stackoverflow.com/questions/1784780/how-to-break-out-of-jquerys-each-loop) – outis 2012-03-28 05:00:58

回答

12

return false休息,就像在普通的JavaScript for循環break。 和return true就像continue

對於X部分,您需要重複收集length,因爲each不提供該信息,不幸的是。

所以,你的情況:

$.each(data.People, function (i, person) { 
    if (i == 20) { 
    html.push("<p>" + (data.People.length - i) + " more people...</p>"); 
    return false; 
    } 
    html.push("<img title='" + person.Name + "' height='45' width='45' src='" + person.Picture + "' /> "); 
}); 
6

您的計數器在您的代碼中爲i。所有你需要做的是當我== 20終止每個是return false。從jQuery的each

$.each(data.People, function (i, person) { 
    if (i == 20) { return false; } 
    html.push("<img title='" + person.Name + "' height='45' width='45' src='" + person.Picture + "' /> "); 
}); 
+1

需要更多的花括號。 – jbabey 2011-12-29 18:41:20

相關問題