2011-08-19 4 views
2

과 멀티 클래스 요소를 대상으로하는 방법은 다음 두 테이블과 jQuery를 가지고 :jQuery를

<table class="grid" /> 
<table class="grid custom" /> 

$('.grid tr:even').addClass('alt'); 

여기에서 일어나고있는 것은 두 테이블이 jQuery를 표적이되고 있다는 점이다. 첫 번째 테이블은 짝수 행을 선택하면 잘되지만 두 번째 테이블에서는 홀수가 선택됩니다.

표 1 (그리드)
행 1
행 2 - 배경 색상 (이것이 오른쪽)

표 2 (그리드 사용자 정의)
행 1 - 배경 색상 (이것은 잘못된 것입니다)
행 2

어떻게 해결할 수 있습니까?

답변

3

http://jsfiddle.net/Ftk5n/

문제는 $('.grid tr:even') 선택이 .grid tr에 의해 반환되는 모든 행 세트에 :even 기준을 적용 있다는 것이다보십시오. :even을 테이블 단위로 적용하려고합니다.

덧붙여, 당신은 CSS에서 순수하게이 작업을 수행 할 수 있습니다 http://jsfiddle.net/ahf9q/1/

편집는 : JQuery와 CSS가하는 것처럼 작동하는 nth-child 선택을 가지고 밝혀졌습니다. 당신이 오히려 CSS보다 jQuery를이 일을 설정하는 경우, 당신은 할 수 : 기록,``$를 들어

$('.grid tr:nth-child(odd)').addClass('alt'); 

http://jsfiddle.net/Ftk5n/2/

+0

고마워. – Mike

+0

CSS 방법의 문제점은 IE 7/8에서 작동하려면이 기능이 필요하며 nth-child는 지원되지 않습니다. 나는 개정 된 jQuery nth-child 메소드를 좋아하는데, 다시 한번 감사드립니다. – Mike

2
$('.grid').each(function(){ 
    $(this).find("tr:even").addClass('alt'); 
}); 

그렇게해야합니다.

+0

각각 ...''이다 ('그리드.'). 불필요한. addClass ('alt')''는 $ ('. grid')에 의해 선택된 모든 것에 대해''find''와''addClass''를 수행합니다. .grid ')''. – BishopRook

+0

고맙습니다. @ 비숍 루크! (서사시 사용자 이름 btw) 나는 그것에 대해 모른다 .find –

1

$('.grid').each(function(){ 
    $("tr:even", this).addClass('alt'); 
});