2009-08-11 7 views
5

내 HTMLJQuery와 하위 선택기 질문

<div id="x"> 
    <div id="x1"> 
    some text 
    <div>other text</div> 
    </div> 
    <div id="x2">just text</div> 
<div> 

내 전화

어떤 JQuery와 선택, 1 개 이상의 요소가 될 수있는 것보다 나는이 요소를 가지고 :

var x = $("#x"); 

지금 내가 필요 (이 탭과 같은 내부 요소를 발견 할 수있는 플러그인입니다.) 첫 번째 DIV 요소를 통해서만 탐색하고 Childrend는 탐색하지 않습니다. 나는

$.each($($("div"), x), function() { 
    alert($(this).html()); 
}); 

쇼 ... 시도하고있다 : 1. 일부 textother 텍스트 2. 다른 텍스트 3 단지 텍스트

$.each($($("div"), x).siblings(), function() { 
    alert($(this).html()); 
}); 

쇼 : 1 단지 텍스트 2. 일부 텍스트 기타 텍스트

이것은 가장 근사하지만 올바른 순서로 작성해야합니다. 어떠한 제안 ? 감사합니다

ps. 플러그인이기 때문에 이것을 할 수 없습니다.

$("#x", "div....") 

나는이

#(newselector, x) 

답변

10

당신이 다음 VAR (X)에 특정 선택 정의 가정을 생각하는 모든 선택기와 함께 작동해야하기 때문에 당신이 $("#x > div")을 사용할 수없는 경우 :

+0

이것이 내가 필요한 것입니다. 감사. 전에 $() 아이들을 보지 못했습니다. –

1

를 사용하여 작업을 수행해야합니다 당신의 선택으로

$("#x > div") 

- 그것은 단지 ID x을 인 div의 직접 아이를 선택합니다.

+0

안녕 친구가, 내가 $ ("#의 x"를 사용하지 못할 말했다

var x = $('#x'); // this will select only the direct div children of x whatever the x is x.children('div'); 
을) 이것은 플러그인이기 때문에 $ ("# x")는 어떤 유형의 선택자이든지 $ ("*") 일 수 있습니다. $ (selector, jqueryobj) 감사합니다. –

+0

@Rodrigo : 대답은 여전히'>'입니다. '$ ('> div', jqueryobj)와 같은 다른 방법으로도 사용할 수 있습니다. –

1

이 방법은 당신에게 사업부의 모든 내부 텍스트 줄 것이다 :

x.children('div').each(function() { 
    alert($(this).text()); 
}); 

당신이 모든 여러 자식 된 div에서 결합 텍스트 원하지 않는 경우를, 당신은 단지 직접 텍스트 노드에 액세스 할 수 있습니다 각 :

x.children('div').each(function() { 
    alert(this.childNodes[0].nodeValue); 
}); 

참고 가정 xvar x = $('#x') 의해 한정된 JQUERY 요소이다.

+0

+1 - 이것도 작동합니다. –