2012-03-09 4 views
0

이 방법을 더 간단하게 만들 수있는 방법이 있습니까?다른 DIV 앞에 부모 DIV 안에 DIV를 작성하십시오. DIV

$('#content').append('<div id="bar"></div>'); 
$('#bar').insertBefore('#footer'); 
$('#foo').appendTo('#bar'); 

이것은 최종 제품의 모양입니다. 그러나 이렇게하는 것이 더 깨끗한 방법이라고 가정합니다.

<div id="content"> 
    <div id="bar"> 
    <div id="foo"></div> 
    </div> 
    <div id="footer"></div> 
</div> 

... 음, 두 줄로 줄였습니다.

$('<div id="bar"></div>').insertBefore('#footer'); 
$('#foo').appendTo('#bar'); 

#footer가 항상 있기 때문에 #content에 추가 할 이유가 없습니다.

+0

[insertBefore()'] (http://api.jquery.com/insertBefore/)는 생각하는대로 생각하지 않습니다. 당신의 사용법에서는'$ ('# footer') 원소 앞에'$ ('# bar')'를 삽입 할 것입니다. 반면에 완성 된 코드는'# bar'는'# footer'의 * parent *이어야한다고 제안합니다. –

+0

감사합니다. 그냥 잡았습니다. 예제를 업데이트하겠습니다. 알았어. 예제를 복제하는 실수. – benblustey

답변

2

내가 제안 수 :

$('<div id="bar" />').insertBefore($('#footer')).append('<div id="foo" />'); 

JS Fiddle demo.

간결하게하기 위해 (실제로 솔직히 읽고 이해하기가 쉽다)이긴하지만, 처음 시도한 것보다 훨씬 간단합니다.

나는 위의 코드에서 #foodiv이 페이지에 이미 존재하지 않는다고 가정합니다. 그것은 가하는 경우 다음 대신 사용 이미 존재 :

$('<div id="bar" />').insertBefore($('#footer')).append($('#foo'));​ 

JS Fiddle demo합니다.

참고 :

+0

이것은 정확히 내가 찾고있는 것입니다. 내 솔루션이 작동했지만, 그것은 대충이었습니다. 맞습니다. 'foo'는 동적 인 SEO 콘텐츠가 헤더에로드되었지만 템플릿 페이지로 이동해야했습니다. 이것은 완벽한 해결책입니다. 귀하의 안내에 감사드립니다. – benblustey

+0

당신은 절대적으로 환영합니다; 도와 줘서 다행이야! =) –

관련 문제