jQuery :odd 或 :even 将 addClass 添加到某个选择器?

jQuery :odd or :even to addClass up to a certain selector?

我需要向选择器添加一个 alt class(奇数或偶数),然后在到达另一个选择器后重新开始。

我有什么

<div class="person"></div>
<div class="person"></div>
<div class="person"></div>
<div class="person"></div>
<div class="person"></div>
<div class="section-separator"></div>
<div class="person"></div>
<div class="person"></div>

我需要的

<div class="person"></div>
<div class="person alt"></div>
<div class="person"></div>
<div class="person alt"></div>
<div class="person"></div>
<div class="section-separator"></div>
<div class="person"></div>
<div class="person alt"></div>

我 运行 遇到的问题是它想从上一节继续计数 odd/even 而不是重新开始,所以我的样式没有正确应用。我目前的 jQuery 是 $('.personbox:odd').addClass('alt');

我认为没有聪明的方法可以做到这一点。不聪明的方法只是 select .person.section-separator 元素并循环遍历,跟踪索引:

var index = 0;
$(".person, .section-separator").each(function() {
  var $this = $(this);
  if ($this.hasClass("section-separator")) {
    index = 0;
  } else {
    if (index % 2 == 1) {
      $this.addClass("alt");
    }
    ++index;
  }
});
.alt {
  color: blue;
}
<div class="person">testing</div>
<div class="person">testing</div>
<div class="person">testing</div>
<div class="person">testing</div>
<div class="person">testing</div>
<div class="section-separator">separator</div>
<div class="person">testing</div>
<div class="person">testing</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>