Javascript 如何按索引号从.each()中分离出来

Javascript 如何按索引号从.each()中分离出来,javascript,jquery,Javascript,Jquery,我想把列表中的每三个项目分开,然后像孩子一样给它添加一个类 <ul> <li>1</li> <li>2</li> <li>3</li><!--target list item--> <li>4</li> <li>5</li> <li>6</li><!--target list

我想把列表中的每三个项目分开,然后像孩子一样给它添加一个类

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li><!--target list item-->
    <li>4</li>
    <li>5</li>
    <li>6</li><!--target list item-->
    <li>7</li>
</ul>
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,

有什么想法吗?

有一个CSS伪选择器:

:nth-child(xn+y)
选择从
y
开始的每个
x
子级,因此在您的情况下
x=3
y=1
(默认值)

演示


请参见和

您应该使用第n个子伪选择器

$("ul li:nth-child(3n)").addClass("break-here");

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
i=0; $。每个($(“li”)函数(键、值){ i++; 如果(i%3==0){ //做事 } })
这将有助于解决问题


另一个没有伪选择器的解决方案

collection.each(function(i, item){
    if(! i%3) {
        $(item).addClass('c');
    }
});

美好的我会循环,所以你只是教了我一些东西。我认为这在IE@luso中不起作用;jQuery的选择器语法可能看起来像CSS,但实际上是在代码中实现的。不管浏览器是否支持CSS选择器,jQuery选择器都应该工作。太好了,我真的不知道。。。谢谢@Alnitak我永远不会让IE站在任何地方:D无论如何,经典方式的两个答案已经发布了。@luso如果页面上有多个
,所有其他答案都将中断。尽管循环是不必要的,但你应该使用
$('li')。每个(…)
,而不是
$。每个($('li'),…)
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li><!--target list item-->
    <li>4</li>
    <li>5</li>
    <li>6</li><!--target list item-->
    <li>7</li>
</ul>

<script type="text/javascript">
i = 0;
$.each($("li"), function(key,value) {
    i++;
    if (i % 3 == 0) {
        //Do things
    }

})
</script>
$("li")​.each(function(index,item){
    console.debug(index)
    if(index % 3 == false){
        $(this).addClass("newClass");
    }
})​
collection.each(function(i, item){
    if(! i%3) {
        $(item).addClass('c');
    }
});
$('ul li').each(function(i,e){
  $(e).eq((i+1)%3).addClass('red');
});