2011-12-29 65 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

相关问题