2011-02-11 4 views
6

요소를 선택하고 싶지만 조상 중 하나가 특정 선택기와 일치하는 경우는 제외합니다.컨텍스트를 부정하는 방법

예를 들어 테이블의 하위 노드가 아닌 <a> 노드를 모두 일치시키려는 경우를 가정 해 봅시다.

나는이 같은 시도 :

$("a", ":not(table *)"); 

을하지만 브라우저를 충돌합니다.

이 하나는 브라우저를 중단 :

jQuery("a", ":not(table td)"); 

조회 페이지가 매우 큰 테이블의 많은 매우 크다. 그래서 나도 잘 수행할만한 것이 필요합니다. 어떤 아이디어?

답변

6

다른 답변은 지나치게 복잡합니다.

$('a').not('table a'); 

- 또는

$('a:not(table a)'); 

jQuery 함수의 두 번째 파라미터는 원소 검색 밑 상황이지만 :not(table)을 선택하는 테이블 아니다 모든 요소를 선택할 것이다 테이블의 자손을 포함합니다. 일반적으로 검색하려는 특정 문서 나 요소가있을 때 컨텍스트 매개 변수를 사용하려고합니다.

+0

감사! 흥미롭게도, 테이블을 스캔하지 않으면 성능이 떨어집니다. 왜냐하면 : not selector는 시간이 걸리기 때문입니다. – Aaron

0
$('a').not(function() { 
    return $(this).closest('table').length > 0; 
}); 

또는 항상 <td> 태그의 직계 자식 경우 가능성이 빨라집니다

$('a').not(function() { 
    return $(this).parent('td').length > 0; 
}); 
관련 문제