2011-10-02 7 views
1

li ali:has(a)을 적용 할 때 다른 결과가 나타납니다. 하지만, 왜 그런가요? 그들은 같은 일을하기로되어 있지 않습니까?jQuery - 왜`li a`와`li : has (a)`가 다른가요?

+0

'li a '는 LI 조상을 가진 모든 A 요소와 일치합니다. 'li : has (a)'는 A 자손이있는 모든 LI 엘레멘트와 일치한다. –

+0

@ ime Vidas. 차이점을 더 명확히 할 수 있습니까? 그것은 아직도 명확하지 않다 – Simplicity

+0

명백하게 나는 한 번 여기에 같은 질문에 전문 용어로 채워진 대답을 썼다 : http://stackoverflow.com/questions/5067081/jquery-what-is-the-difference-between-the-descendant-selector -and-has-selec 그러나 Pekka의 답변에 대한 의견은 당신을 위해 충분히 간단해야합니다. – BoltClock

답변

7

동일한 작업을 수행하지 않아도됩니까?

아니요. 첫 번째 예에서는 li 안에 모두 a을 선택합니다. 두 번째 방법에서는 a이있는 li을 모두 선택합니다. manual 가입일

는 강조 광산 :

설명 : 지정된 선택 일치되는 적어도 하나 개의 원소를 포함하는 요소를 선택한다. <p>가 직접 아이로뿐만 아니라, 그 자손 중 어느 곳이있는 경우

표현 $('div:has(p)')<div> 일치합니다.

+0

당신이 말할 때 : ** 첫 번째 예제에서, 당신은'li' 안의 모든'a'를 선택합니다; 둘째로,'''** '을 가진 모든'li'을 선택하고 있습니다, 여전히 약간 혼란 스럽습니다. 'li' 내부에있는'a'를 모두 선택하면,'li'는'a'를 포함해야하고, 그렇지 않으면 선택되지 않을 것이며, 두번째 것과 같은 것입니까? 친절하게 단순화 해 주실 수 있습니까? Thanks – Simplicity

+2

@ Med-SWEng 첫 번째 선택기를 사용하면 A 요소가 표시되고 두 번째 선택기를 사용하면 LI 요소가 표시됩니다. 그 차이는 ... –

+0

@Med Šime은 잘 표현합니다. 그 차이가 명확한가? "가지고있다"는 '리'의 재산이다. 그것은 문자 적으로'적어도 하나의 "a"유형의 자식이있는 모든 li 요소를 제공한다는 것을 의미합니다. –

관련 문제