繁体   English   中英

如何通过索引号打破.each()

[英]How to break out of .each() by index number

我想打破列表中的每三个项目,并为该孩子添加一个类;

<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>

任何的想法?

您应该使用nth-child伪选择器

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

有一个CSS伪选择器:

:nth-child(xn+y)

选择从y开始的每个x子项,所以在你的情况下x = 3y = 1 (默认值)

$('li:nth-child(3n)').addClass(...);

演示http://jsfiddle.net/8WDK4/

请参阅http://www.w3.org/TR/selectors/#nth-child-pseudo示例

    <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");
    }
})​

这将是诀窍

http://jsfiddle.net/TYuAn/

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

collection.each(function(i, item){
    if(! i%3) {
        $(item).addClass('c');
    }
});
$('ul li').each(function(i,e){
  $(e).eq((i+1)%3).addClass('red');
});

演示jsbin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM