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');
});