2014-01-06 6 views
3

내 제목이 거의 모호하다고 생각하지만 진실은 명확히하는 방법을 모르겠다 ... 그러므로 질문.형제/자녀/부모를위한 JQuery 선택자

HTML을

<tr> 
    <div class="thisis(this)inmyexample"></div> 
    <div class="stuff"> 
    <div class="foo"></div> 
    </div> 
</tr> 

내 질문은 선택기의 차이에있다. 이제 나는이 사용하는 경우 .stuff$(this)의 형제가 있다고 가정합시다 : 이제

$(this).closest('tr').find('.stuff .foo') 

을, 나는 이것이 효율적인 코딩이 아니라 그냥 쉬운 예로서 깨닫는다. 그것으로, 나는 의 아이들 인 .foo의 모든 클래스를 발견 할 것입니다.

내가 이것을 사용하는 경우 :

$(this).siblings('.stuff .foo') 

난 아무것도 찾을 수 없습니다. 이것은 아마도 jquery로 이야기 한 경험이 없지만 어쩌면 그런 종류의 셀렉터가 아닌 것입니까 ('.stuff.foo'과 같이 공간을 사용하거나 둘 다 함께 사용하는 선택자를 무엇이라고 부릅니까?). 제 기대는 클래스가 .stuff 인 모든 형제를 찾아 의 모든 어린이를 .foo 클래스로 찾으십시오. 형제/자녀/부모가 형제/부모/자식만을 찾고 그 이상을 보지 않기 때문에 효과가 없습니까?

$(this).siblings('.stuff').children('.foo') 

을 나는 내 목표를 달성 :

은 내가 이것을 사용할 수 있습니다 알고 있습니다. 나는 왜 내가 위의 선택기 (제대로 호출되는지)가 작동하지 않는지 궁금하다.

미리 감사드립니다.

+0

@PranavRam 그렇기 때문에 '.stuff foo'가 결코 형제가 아니기 때문입니다. 맞습니까? – Aarmora

+0

이것은 잘못된 HTML 마크 업입니다. –

+0

@ A.Wolff HTML이 정말로 중요하다고 생각하지 않습니다.'.stuff'와'$ (this)'는 형제이며'.foo'는 자식입니다. '.stuff'의. 나는 틀린가? – Aarmora

답변

2

당신은 당신 자신의 질문에 답했습니다. 왜냐하면 .foo는 $ (이)의 형제가 아니기 때문에 $ (this.) .siblings ('. stuff .foo')와 아무 것도 찾을 수 없을 것입니다. 그것은 일종의 '손주 '. 선택기를 사용하면 .stoo 부모를 갖는 .foo 형제를 찾습니다. $ (this), .stuff 및 .foo 형제, .stuff 자식 및 $ 형제가 아닙니다.).

+0

그게 내가 생각한거야. 감사! – Aarmora