2016-07-19 2 views
2

선택기에 alt 클래스 (홀수 또는 짝수)를 추가 한 다음 다른 선택기에 도달 한 후 다시 새로 시작해야합니다.jQuery : odd 또는 : 특정 셀렉터까지 addClass까지?

내가 무엇을 가지고

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

내가으로 실행 문제를 필요로 무엇도 이전 섹션에서/홀수 계산 유지하고 다시 시작하지 싶어입니다 다시, 제 스타일은 올바르게 적용되지 않습니다. 현재 jQuery는 $('.personbox:odd').addClass('alt');

답변

3

저는 이것을 수행하는 영리한 방법이 없다고 생각합니다. 유엔 - 영리한 방법은 인덱스를 추적 유지를 통해 .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>

+0

감사합니다. 나는 "똑똑한"방법을 원했지만 이런 느낌이 들었습니다. 훌륭한 작품입니다. – Sean

+0

CMS에서 인덱스를 재설정해야 할 때를 항상 정의하는 섹션 구분 기호가 아닐 수도 있으므로 실제로는 약간의 변경을해야했습니다. 그래서 다음은 우리를 위해 일합니다 ... if (! $ this.next(). hasClass ("personbox")) – Sean