如何为每个第4个元素添加一个类?

时间:2010-06-18 09:22:24

标签: jquery modulo

不要问为什么,但我需要将类斑马添加到<li>元素及其旁边的内容。这是我所拥有的,但我不确定使用什么计算:

$("li").each(function(index){
    if(index % ??? == 0) {  // <-- not sure what to put here

    }
});
<ul>
  <li></li>
  <li></li>
  <li></li> <!-- add the zebra class here -->
  <li></li>
  <li></li>
  <li></li>
  <li></li> <!-- add the zebra class here -->
  <li></li>
  <li></li>
  <li></li>
  <li></li> <!-- add the zebra class here -->
  <li></li>
</ul>

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:12)

:nth-child()选择器可以接受一个等式,它可以完美地解决您的问题:

$('ul li:nth-child(4n+3)').addClass("zebra").text("Here");

从3开始选择每{4} li:nth-child(4n-1)也会有效(每4-1个元素)。不需要each()或模数。

http://jsfiddle.net/AvPhe/ - 基于您的示例输入的示例, zebra 类与文本“Here”一起添加。

答案 1 :(得分:2)

从我所知道的,你想要第3,第7,第11,...类“斑马”:

$("li").each(function(index,item){

if((index+2)%4 == 0) {
  $(item).addClass("zebra");
}

});

编辑:查看安迪的回答。比我好多了: - )

答案 2 :(得分:0)

期间为4,因此模数应为4.
但是它会被两个偏移,因此您需要在索引中添加2:

if ((index + 2) % 4 == 0)

答案 3 :(得分:0)

if (index % 4 == 2)

是我认为你正在寻找的。

在您的示例中,您选择了第3,第7和第10个元素。