2011-02-03 3 views
2

요소를 선택할 수 있지만 두 요소의 id-s가 알려진 경우 내부에 중첩 된 요소가 하나도없는 상황입니까?JQuery - 내재 된 하나의 특정 요소를 제외한 전체 요소 선택

처럼 :

<div id="outerdiv"> 
    <div> 
     <div id="innerdiv1"> </div> 
     <div id="innerdiv2"> </div> 
    </div> 
</div> 

나는이 같은 outerdiv하지만 innerdiv2없이을 반환하는 선별하고 싶지 :

<div id="outerdiv"> 
    <div> 
     <div id="innerdiv1"> </div> 
    </div> 
</div> 

달러 (A $)와 같은 문장 ('#의 outerdiv')가있다. 아니 ('# innerdiv2') 또는 그 트릭을 할 것이라고?

감사

다음
+1

무엇을하려고합니까? –

+0

죄송합니다, 귀하의 의견을 놓쳤습니다. 나는 $ ('form'). serializeArray()를 사용하여 양식을 직렬화하려하지만 양식 요소 안에있는 테이블에서 입력을 제외하려고합니다. – frenzy

답변

5

당신이,

$('#outerdiv div:not(#innerdiv2)') 

와 .. 이런 식으로 할 수있는 기회가 나는이 사용하여 복제를 (해결할 수) +() 제거 할 수 있지만 메신저는 방황 바깥 쪽 div 포함 :

$('#outerdiv div:not(#innerdiv2),#outerdiv') 

실제로 유효한 CSS3 선택기이며 jQuery에서도 작동합니다.


내가 브라우저 콘솔에서 약간의 테스트를했습니다 댓글에 응답하려면 : 선택한 스택의 첫 번째 일치하는 요소의

a = $('<div id="a"><div id="wrap"><div id="one"></div><div id="two"></div></div>') 
a.find('div:not(#two)').addClass('a') 

Result: 

<div id=​"wrap" class=​"a">​ 
<div id=​"one" class=​"a">​</div>​ 
<div id=​"two">​</div>​ 
</div>​ 

html() 방법 인쇄 HTML 콘텐츠를. 선택한 스택은 [#outerdiv, div, # innerdiv1]과 유사합니다. 따라서 html()은 (는) #outerdiv에 대한 html을 표시합니다. 먼저 선택기이 할 수에서

$('#innerdiv2').detach() 
$('#outerdiv').html() 
+1

참고로 div에서 div가 아닌 모든 div가 선택됩니다. 이것은 ID가없는 div를 포함합니다 (여전히'# innerdiv2'가 있음). –

+0

고마워요.하지만 Drackir이 괄호 안에 쓴 것은 문제가있는 것입니다. 나는 innerdiv2가없는 구조를 보여주기 위해 경고 ($ ('# outerdiv div : not (# innerdiv2), # outerdiv'). html())를 원한다. ) – frenzy

+0

설명해 주셔서 감사합니다. – frenzy

1

내가 생각,하지만 당신은 HTML 구조를 원한다면, 당신이 실제로 있어야합니다 생각 : 당신이 #innerdiv2없이 HTML을 생성 할 필요가 있다면, 당신은 그것을 분리 할 필요가 #selector에 의해 일치하는 요소 목록이 아닌 html 구조체. 위키에서 :

$(document).ready(function(){ 
    var clone = $('#outerdiv').clone() 
    $(clone).hide(); 
    $('body').append(clone); 
    $(clone).attr('id','cloneddiv'); 
    $('#' + $(clone).attr('id') + ' #innerdiv2').remove(); 
    console.log($(clone)); 
$(clone).remove(); 
}); 

console.log()는 Firebug의 콘솔 로깅 도구를 참조합니다. 이것은 어떤 방식 으로든 당신이 찾고있는 것을 얻습니다.

다른 사람들이 이와 같은 대답을했지만 삭제했습니다. 확실하지 않은 이유 ...

관련 문제