2014-06-30 3 views
0

특정 요소를 쿼리하고 싶습니다. 코드Angularjs 각도기 : 유효한 중첩 요소를 제외하기위한 선택자

내 구조는 다음과 같습니다 :

HTML 나는 '주 class but not for 리튬의 which are inside에-exclude` 클래스 내부 li's 존재를 테스트 할

<ul class="main"> 
    <li>...</li> 
    <li>...</li> 
    <li> 
     <ul class="to--exclude"> 
      <li>...</li> 
      <li>...</li> 
     </ul> 
    </li> 
    <li>...</li> 
    ... 
</ul> 

.

내가 element(by.css('.main li'))을 사용하면 to-exclude 클래스 안에있는 것들을 포함하여 모든 li's을 찾습니다.

크롬의 개발자 도구 , 나는 정확히 JQuery와의를 사용하여 위치를 찾을 수있어 :not 또는 .not().

$('.main li').not('ul.to--exclude li') 
// OR 
$(".main li:not('ul.to-exclude li')"); 

하는

element(by.css('.main li').not('ul.to--exclude li')); 
// OR 
element(by.css(".main li:not('ul.to--exclude li')")); 

상기 코드로서 끄는에서 사용하는 동안 오류를 범 : 각도기 동일한 수행하는 방법

InvalidElementStateError: invalid element state: Failed to execute 'querySelectorAll' on 'Document': '.main li:not('ul.to--exclude li')' is not a valid selector. 

. 부모 로케이터 클래스 내에 중첩 된 일부 클래스를 제외하는 방법.

감사

+0

jQuery를': 당신이 .to--include 같은 다른 ul의가없는 경우

<ul class="main"> <li>...</li> <li>...</li> <li> <ul class="to--exclude"> <li>...</li> <li>...</li> </ul> </li> <li> <ul class="to--include"> <li>...</li> <li>...</li> </ul> </li> ... </ul> 

당신의 선택을 줄일 수 ': not()'- [내 jQuery : not() selector가 CSS에서 작동하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/questions/10711730/why-is-my-jquery-not-selector-not -working-in-css) – BoltClock

+0

또한 HTML이 유효하지 않으므로 'ul'내에 직접 'ul'을 가질 수는 없습니다. 목록을 중첩 시키려면'li' 내에'ul'이 있어야합니다. – BoltClock

답변

3

당신은이 같은 CSS 의사 클래스 :not으로 그렇게 할 수 있어야한다 : 당신이 모든 선택하려는 것으로 보인다

element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)")); 

내가 백업 선택으로 .main > li를 추가 자식 li.main입니다. 이 선택은 경우에 의미가 있습니다 :하지()`CSS는 다른 :

element(by.css(".main > li)")); 
+1

이것은 'ul'요소가 한 레벨까지만 중첩 될 것이라고 가정합니다. 더 이상 중첩 된'ul' 엘리먼트를 가지고 있다면'not()'를 사용하여 필터 할 수 없습니다 - [CSS : not() 선택자가 멀리 떨어진 자손과 작동하도록되어 있습니까?] (http : // stackoverflow.com/questions/20869061/is-the-css-not-selector-supposed-to-work-with-distant-descendants) – BoltClock

관련 문제