停止jQuery each()循环

时间:2012-03-13 19:11:57

标签: jquery each

所以我有一个.item类的多个实例,但是被分成不同的部分(它是一个确定的类,不能改变)...现在的问题是我有使用的代码:odd来改变背景这些项目,但是当下一部分开始时,它会从最后一部分开始。这样:

如果Instance One有3个项目,则第2项将突出显示。 然后实例二将使第一个项目成为高位。它不再“开始”循环。希望这是有道理的。

这是我到目前为止的代码:

$('.item').each(function(){
    $('.item:odd').css('background','#FFF4F9');
});

所以实例1:

<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>

实例2:

<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>

提前感谢。

6 个答案:

答案 0 :(得分:3)

选择器使用$('.item:odd')无论是否在循环中都将索引页面上的所有class = item

隔离容器中的odd

 $('.container').each(function(){
     $(this).find('.item:odd').css('background','#FFF4F9');
});

答案 1 :(得分:2)

为避免不得不突破循环,或测试元素落在何处,为什么不简单地使用以下内容:

$('.listitem').parent().find('.listitem:odd').css('background','#F00');

这将选择.listitem选择器,查找父项,然后找到该父项的:odd子项,因此在每个父元素中,无论可能是什么,都会重新启动“编号”

JS Fiddle demo

答案 2 :(得分:1)

在每个处理函数中返回false

答案 3 :(得分:1)

return false循环中使用each将打破循环。

答案 4 :(得分:1)

您需要将循环约束到某种容器。现在看起来你正在使整个文档中的所有其他.item变成不同的颜色。如果只想要容器中的所有其他行。所以如果你有:

<div class="container">
  <div class="item></div>
  <div class="item></div>
  <div class="item></div>
</div>
<div class="container">
  <div class="item></div>
  <div class="item></div>
  <div class="item></div>
</div>

您可以使用以下代码:

$('.container').each(function(){
    $('.item:odd').css('background','#FFF4F9');
});

答案 5 :(得分:0)

在你的代码示例中没有任何理由使用。或者你只是运行相同的查找3次。