2011-06-13 3 views
1
<div class = ui-dialog-abc ui-dialog-xyz> 
<div id = "sheet1abc"> 
</div> 
</div> 

<div class = ui-dialog-abc ui-dialog-xyz> 
<div id = "sheet1xyz"> 
</div> 
</div> 

<div class = ui-dialog-abc ui-dialog-xyz> 
<div id ="sheet2foo"> 
</div> 
</div> 

<div class = ui-dialog-abc ui-dialog-xyz> 
</div> 

div에 포함 된 div를 기준으로 div를 선택할 수 있습니까? divdiv이 포함되어 있고 idsheet1이 표시되거나 숨겨져 있습니다.Jquery를 사용하여 어떤 단위로 나누기를 선택합니까?

답변

5

정확하게 이해했다면 div의 부모 인 divid이 "sheet1"로 시작하도록 선택하려고합니다. 맞습니다 경우

는 다음을 수행 할 수 있습니다 : "시트 1"로 시작하는 id 모든 div 요소를 선택합니다

$("div[id^=sheet1]")

합니다. 그런 다음 each을 사용하여 요소 세트를 반복하고 각 요소의 parent을 가져 와서 부모 div에 액세스 할 수 있습니다.

부모가 div이되면 show 또는 hide을 사용하여 표시하거나 숨길 수 있습니다.

각 일치하는 부모 divid에 대해 경고하는 example fiddle을 참조하십시오. 당신이 찾고있는 div 아이가 조상 div의 직접적인 자식이 아닌 경우

업데이트

, 당신은 당신의 id와 첫 조상에게 divdiv를 찾기 위해 DOM 트리를 올라 parent().closest('div')을 사용할 수 있습니다 .

질문에 "div ... div ..."이 포함되어 있으므로이 메서드는 첫 번째 조상 인 div을 가져옵니다. 어린이 div이 테이블에 포함되어있는 this fiddle을 참조하십시오.

+0

+1 :) 덕분에 ... 작품! – R1234

+0

이 문구는 일반적으로 "포함"은 모든 수준을 의미하지만 본보기는 직접적인 부모를 의미합니다. 모든 것을 숨기기 때문에'.parent(). hide()'와 여러분의 코드 (다른 것보다 길거나 약간 덜 효율적)와 다른 점은 확실치 않습니다. parent.hide도 마찬가지로 유연합니다. 나는 단지 일부를 숨기고 싶었고, 나는 필터를 추가 할 것이다 ... – davin

+0

동의했다. 잠시 후에 직접 자식 대신 하위 요소로 작업 할 수있는 대답을 업데이트 할 것입니다. –

1
$('div').has('div[id="sheet1abc"]').text(); 
$('div').has('div[id="sheet1xyz"]').text(); 
+0

아마도': has()'를 사용 하겠지만, sizzle이 최적화 할 수는 있을지 모르지만,이 답변은 실제로 좋은 해결책입니다. – davin

0

잡아에게 그 ID가 '시트 1'을 포함하는 모든 div의는 그들의 가장 가까운 컨테이너 div 잡아 :

$('div[id*=sheet1]').map(function() { 
    return $(this).parents('div:first')[0] 
}); 
관련 문제