jQuery count divs并在20之后添加class

时间:2013-09-06 18:20:17

标签: javascript jquery

我正在使用jQuery来计算div,并且希望在计数20时添加一个类。 ie:divs 1-20是class =“box”,div 21 +是class =“box new”

这就是我所拥有的,但它为所有div添加了“新”类。

$(function() { 
    var divCount = $("#content").children(".box").length; 

    if (divCount > 20) { 
        $(".box").addClass("new"); 
    } 
});

5 个答案:

答案 0 :(得分:7)

$(".box:gt(20)").addClass("new"); 

答案 1 :(得分:2)

只想指出你可以使用nth-child只使用CSS。当然,如果您使用该类进行定位,您仍然可能想要使用jQuery路径:

div.box:nth-child(n+21) {
    ... new styles go here   
}

在此处查看更多内容:http://css-tricks.com/useful-nth-child-recipies/

答案 2 :(得分:0)

这样的事情应该有效:

var i = 0;
$("#content").children(".box").each(function(i, k) {
   if(++i > 20) $(k).addClass("new");
});

$("#content").children(".box").each(function(i, k) {
   if($(k).is(":gt(20)")) $(k).addClass("new");
});

答案 3 :(得分:0)

考虑到您的代码如下所示: 如果有超过20个框,请使用类'box'将所有div添加为'new'。所以,所有框都被选中。

在这种情况下,我推荐使用:gt()选择器:gt-selector - jQuery

因此:

$(function() { 
    $(".box:gt(20)").addClass("new"); 
});

如果您不确定使用哪个选择器,可以使用此备忘单:Oscar Otero jQuery Cheatsheet

答案 4 :(得分:0)

您的代码:

if(divCount> 20)

实际上正在检查一个条件是否真实,并为所有具有类.box的元素添加了一个类“new”,因为当你有超过20个div时条件通过了测试。

你要做的是遍历元素并检查你的条件的真实性,如果它的索引高于20 - 1,则将新类应用于当前元素(计数从零开始,所以你的元素有一个索引19将是你的第20个元素。)

$(function() {
    $.each($("#content").children(".box"), function(index, value){
        if ( index - 1 > 20 ) {
            $(this).addClass(".new");
        }
    });
});