更简单的方法来限制.each()循环中的条目

时间:2011-11-20 19:32:18

标签: javascript jquery

我一直想知道是否有一种很好的jQuery方式来执行以下操作:

var count = 0;    

$("p").each(function() {
    if (count >= 5)
        return false;

    $(this).toggleClass("highlight");
    count++;
});

jQuery中是否有与each()类似的功能,允许我设置限制它循环的项目数量,或者这是最好的做事方式?

6 个答案:

答案 0 :(得分:13)

最简单的事情是.slice

$("p").slice(0, 5).toggleClass("highlight");
// only <p>s from index 0 (inclusive) to 5 (exclusive)

答案 1 :(得分:4)

您可以简单地限制所选元素:$("p:lt(5)").toggleClass("highlight");

答案 2 :(得分:3)

看看slice()。这将拆分$("p")返回的数组,以便与.each()

一起使用
$("p").slice(0, 4).each(function() {
    // Do stuff
});

.slice()将起始和结束索引作为参数。在上面的例子中,我们从第一个数组元素(索引0)开始,然后将接下来的5个元素返回到索引4。

答案 3 :(得分:2)

它会对你有用吗?

$("p").each(function(index){
 if (index >4)
 {
    return false;
 }
...
});

答案 4 :(得分:1)

编写它的另一种方法是使用filter

$("p").filter(function(index) { return index < 5 }).toggleClass("highlight");

答案 5 :(得分:0)

使用for循环重复循环某个(事先已知)次数。如果重复次数未知,请使用while循环(或每个 - 函数式编程中的模拟)

所以,

var i;

for (i = 0; i < 6; i += 1) {
    $("p")[i].toggleClass("highlight");
}