2012-05-02 3 views
0

jquery 필터 방법을 사용하는 데 문제가 있습니다.jquery 필터 선택기와 필터 방법

나는 대체 행 클래스를 제공하는 표가 포함 사업부 "resultDiv"내 행의

$("#resultDiv tr:odd").addClass("alternate_row"); 

모든이있는 경우.

그러나 내가

$('#resultDiv').filter("tr:odd").addClass("alternate_row"); 

를 사용하는 경우 어떤 요소를 일치 나타나지 않고 아무것도 적용되는 클래스가 없습니다.

필자는 변수를 전달하는 몇 가지 다른 작업을 수행하면서 필터 방법을 사용해야합니다.

무엇이 누락 되었습니까?

+0

Zebra 스트라이핑과 같은 스타일을 목적으로 클래스를 추가하려고하는데 이전 브라우저를 지원하지 않아도되는 경우 CSS3 nth-child 선택기를 살펴볼 수도 있습니다. –

+0

불행히도 우리는 이런 식으로 선택했던 구형 브라우저를 지원해야합니다. –

답변

4

는 :

$('#resultDiv').filter("tr:odd").addClass("alternate_row")

.filter()#resultDiv 요소 tr 일치하지 않는 일련의 요소, 그리고 아무도를 제거하기 때문에 필터가 일치하지 않습니다 아무것도.

시도 명시 적으로 새로운 하위 노드 일치tr:odd 선택, 또는

모든 tr 요소를 찾기 위해 하나의 선택기를 사용
$('#resultDiv tr').filter(":odd").addClass("alternate_row"); 

을 추가

$('#resultDiv').find("tr:odd").addClass("alternate_row"); 

, 그런 다음 .filter을 사용하여 홀수 한 개만 선택합니다.

+0

왜 첫 번째 선택기가 작동합니까? –

+3

@DanielPowell 질문에 있으십니까? 첫 번째 선택자는 자손의'tr' 노드를 명시 적으로 찾습니다. '.filter()'는 새 노드를 찾지 못하면 현재 일치하는 집합 만 줄입니다. – Alnitak

2

내가 #resultDiv 모든 <tr> 년대의 부모 인 것으로 추측하고 그래서 당신이 원하는 생각 : 당신이 ID를 #resultDiv와 요소를 선택하고 두 번째 선택으로

$('#resultDiv tr').filter(":odd").addClass("alternate_row"); 
5

과에 필터를 적용 그것. 하지만 그것은 아마도 콜렉션이 아니며 단지 테이블 일뿐입니다.

tr 요소를 선택하고 이와 같이 필터를 적용해야합니다.

$('#resultDiv tr').filter(":odd").addClass("alternate_row"); 

이렇게하면 tr 컬렉션을 필터에 적용 할 수 있습니다. 첫 번째 버전에서