2009-05-14 7 views
25

JavaScript 또는 jQuery에서 요소가 다른 요소 안에 있는지 직접 확인할 수 있습니까?요소가 jQuery에서 다른 요소 안에 있는지 어떻게 확인할 수 있습니까?

나는 요소의 트리에서 난수 단계가 더 낮을 수 있기를 원하는 요소로 $(this).parent을 언급하고 있지 않습니다.

나는거야 직접적인 방법이없는
if($("div#THIS_DIV").isWithin("div#THIS_PARENT")) ... 

경우

<div id="THIS_PARENT"> 
<div id="random"> 
    <div id="random"> 
    <div id="random"> 
    <div id="THIS_DIV"> 
(... close all divs ...) 

그래서 의사 코드에서 : 예를 들어

, 나는 < div id="THIS DIV">< div id="THIS PARENT"> 내 것이 있는지 확인하고 싶습니다 아마도이 기능을 수행 할 수 있지만 여전히 가치가 있습니다.

+0

당신은 기능'jQuery.contains (컨테이너, 자손)'구축 할 수 있습니다. 아래 내 대답을 참조하십시오. – TLindig

답변

44

이 작업을 수행 할 수 있습니다 :

if($('#THIS_DIV','#THIS_PARENT').length == 1) { 

} 

는 검색 specifying a context (두 번째 인자)에 의해 우리는 기본적으로 "#THIS_PARENT의 ID를 가진 요소 내에 #THIS_DIV의 ID와 요소를 찾아"말하고있다. 이것은 jQuery를 사용하여 수행하는 가장 훌륭한 방법입니다.

그것이 당신에게 더 의미가있는 경우 우리는 또한, find를 사용하여,이처럼 쓸 수있다 :

: 당신이 위쪽으로 아이에서 검색 할 경우
if($('#THIS_PARENT').find('#THIS_DIV').length == 1) { 

} 

또는 같은

가, parents를 사용하여
if($('#THIS_DIV').parents('#THIS_PARENT').length == 1) { 

}  

이 중 하나라도 정상적으로 작동합니다. length 비트는 "검색"의 길이가> 0인지 확인하는 데 필요합니다. 물론 가장 간단한 방법으로 첫 번째 코드를 사용하는 것이 좋습니다.

또한 ID로 요소를 참조하는 경우 선택기 앞에 태그 이름을 붙일 필요는 없습니다 (당연히 완벽 하긴하지만). 속도면에서 볼 때 jQuery는 네이티브 getElementById()을 내부적으로 사용하기 때문에 실제로 도움이되지 않습니다. 태그 이름을 사용하는 것은 클래스에 따라 선택하는 경우에만 중요합니다. 이 .myclass보다 훨씬 빠르며 <div> 요소가 특정 클래스를 가질 경우에만 사용하십시오. jQuery로

+0

Prototype 라이브러리를 사용하여'parent()'버전과 똑같이하는 방법이 있습니다 :'if ($ ('THIS_DIV'). up ('# THIS_PARENT')) {..}' – Izkata

16

> = 1.4 (2010)이 정적 메서드는하지의 jQuery 요소와 DOM 요소, 작동 및 true 또는 false를 반환 매우 빠른 기능 jQuery.contains()

를 사용할 수 있습니다.

jQuery.contains(container, descendant) 

예 : a 요소가 문서에있는 경우이 작업을 수행 할 수 있습니다 확인하려면

jQuery.contains(document.body, myElement) 
관련 문제