2010-01-21 56 views
7

是否有可能運行一個jQuery .each語句一定量的時間,而不是每個迭代的項目?被迭代的JSON是last.fm提要,當然,他們經常忽略「限制」請求。我想通過多次運行.each語句來繞過這個錯誤。jQuery。每個問題

回答

19
var limit = 5; 

$("somelement").each(function(i, val) { 
     if(i > limit) return false; 
     // do stuff 
}); 

$("somelement:lt(5)").each(function() { 
     // do stuff 
}); 
+0

@蘭斯他確實返回false。 – 2010-01-21 19:34:35

+0

當jQuery中已經存在一個解決方案時,這看起來像是強壯的解決方案。 – ashchristopher 2010-01-21 19:35:46

+0

這將工作在JSON數據?這就是改變。 – 2010-01-21 19:41:23

1

返回false out of the iterator當你想停止。迭代器的第一個參數是索引(在循環數組時)。

+1

+1返回給你。我會假設有些人不喜歡這個解決方案,因爲它沒有slice()的高雅或者修改選擇器,但這是一個全用的解決方案......當你需要強制執行限制迴路中,也許經過一些分析後是否有某些項目計入極限。 – king14nyr 2014-05-01 15:24:21

11

而不是修改。每個,修改您選擇器僅選擇所述第一 'N' 的元素。

http://docs.jquery.com/Selectors/lt#index

+6

$(「somelement:lt(5)」);將拉回5個元素 – 2010-01-21 19:40:06

+1

+1:這似乎是最好的方式來做到這一點。 – Powerlord 2010-01-21 19:41:29

+0

這比接受的答案要好得多。 – jhanifen 2011-06-03 20:20:14

2

您的循環之前定義的變量,內每遞增它,if(myvar == 10){return false;}

返回 '假' 從內各 功能完全停止循環 http://docs.jquery.com/Core/each

+0

這是爲我工作的解決方案。在接受的答案中,「我」不會爲我返回一個索引,因爲有一個關鍵字。 – 2016-02-18 13:35:33

4

最好的解決方案是在jQuery中使用.slice方法。

var limit = 5; 
$("somelement").slice(0, limit).each(function(i, val) { 
    // do stuff 
});