2011-03-26 2 views
0

난 데이 마크 업 :jQuery를 : 선택 질문 (가까운)

<div class=gui> 
    <div class=form> 
     <div class=textbox></div> 
     <div class=textbox></div> 
     <div class=textbox></div> 
     <div class=selectbox></div> 
     <div class=selectbox></div> 
     <div class=button></div> 
    </div> 
</div> 

내가 뭘 원하는 div의를 반복하고 해당 부모를 찾을 수 있습니다. 같은 :

텍스트 상자>

선택 박스 형태> 형태

버튼> 형태

형태> GUI를

내 jQuery를 선택은 다음과 같습니다

var dParent = div.closest("div.form, div.gui"); 

그것은 좋은 일 텍스트 상자와 선택 상자에는 사용할 수 있지만 양식. 이상한 것은 폼이 gui 대신 부모로보고한다는 것입니다.

어떤 아이디어가 잘못되었을 수 있습니까?

감사

+0

'부모()'.... –

+0

불행하게도 내가 때문에 래퍼 div의 등의 부모를 사용할 수 없습니다 .. – Fuxi

답변

2

:

div.each(function() { 
     alert($(this).attr('class') 
       + ' has parent ' 
       + $(this).parents('.form:first,.gui:first') 
         .attr('class') 
    ); 
    }); 

는 행동에서 예를 참조하십시오처럼 사용

div.parents('.form:first,.gui:first'); 

: 당신이 부모를 찾을 수있다 싶은 모든 때문에, 사용하는 적절한 방법은 선택과 parents입니다 .closest()은 셀렉터와 일치하는 호출 요소를 선택하므로 $('.form').closest('.form, .gui')을 호출하면 .form이 가장 가까운 것으로 반환됩니다. 따라서, 당신은 단순히 .parent()에서 가장 가까운 전화를 걸 :

var dParent = div.parent().closest("div.form, div.gui"); 

See example →

2
var parent = div.hasClass('form') ? div.closest('.gui') : div.closest('.form'); 

는 구조에 대한 아무것도 모르고 내 추측된다.

0

Closest은 현재 요소로 시작하고 선택기와 일치하는 요소를 찾을 때까지 트리를 따라 이동합니다. 폼을 시작할 때 폼 자체가 선택기와 일치하므로 선택됩니다. http://jsfiddle.net/tFqLE/