jQuery는 컨테이너 자체를 포함하여 컨테이너의 HTML을 얻습니다.


156

내부에있는 내용뿐만 아니라 '#container'를 포함하여 '#container'에서 HTML을 얻는 방법은 무엇입니까?

<div id="container">
 <div id="one">test 1 </div>
 <div id="two">test 2 </div>
 <div id="three">test 3 </div>
 <div id="four">test 4 </div>
</div>

#container 안에 html을 가져 오는 것이 있습니다. #container 요소 자체는 포함하지 않습니다. 그게 내가하고자하는 일이야

var x = $('#container').html();
$('#save').val(x);

http://jsfiddle.net/rzfPP/58/ 확인


컨테이너를 다른 컨테이너 안에 넣고 컨테이너를 html로 가져올 수는 있지만 약간 해키처럼 보입니다. 아마도 우리가 문제에 대해 조금 더 알고 있다면 실행 가능한 해결책을 생각 해낼 수 있습니까? html로 가득 찬 텍스트 영역으로 무엇을하고 있습니까?
Patricia

답변:


160

컨테이너를 더미 P태그로 감싸면 컨테이너 HTML도 얻을 수 있습니다.

당신이해야 할 일은

var x = $('#container').wrap('<p/>').parent().html();

http://jsfiddle.net/rzfPP/68/ 에서 실제 예제를 확인하십시오.

에 태그 완료, 당신은 추가 할 수 있습니다unwrap()<p>

$('#container').unwrap();

19
@ mc10 우리는 단순히 clone ()을 사용할 수 있으며 생성 된 추가 요소에 대해 걱정할 필요가 없습니다. var x = $('#container').clone().wrap('<p/>').parent().html();. 랩의 아이디어는 훌륭하고 제공되는 대부분의 솔루션보다 덜 복잡합니다.
Pinkie

Firefox 문제가 최신 버전이 아니기 때문에 @MikeM 답변에 투표하는 것이 좋습니다. 순수한 JS이기 때문입니다.
Rob

6
<p>태그입니까? <div>더 이해가 되지 않습니까?
Martin Burch 2016 년

6
이것은 훨씬 간단한 해결책이 있습니다. 내 대답을 참조하십시오.
1.44mb

132
var x = $('#container').get(0).outerHTML;

업데이트 : 이제 FireFox 11 (2012 년 3 월)부터 Firefox에서 지원됩니다.

다른 사람들이 지적했듯이 FireFox에서는 작동하지 않습니다. FireFox에서 작동 해야하는 경우이 질문에 대한 답변을 살펴보십시오 .jQuery에서 html () 또는 text ()와 유사한 함수가 있지만 일치하는 구성 요소의 전체 내용을 반환합니까?


6
이것은 Firefox에서 작동하며 현재로서는 허용되는 솔루션보다 낫습니다.
luqita

이것은 그것을하기위한 우아한 방법입니다. 더 나은 해킹 인 것보다 더 나은 대답입니다
minhajul

이것은 완벽 해요.
Gaurav Aggarwal

이것은 부모 태그를 div 또는 p로 감싸는 것이 좋지 않기 때문에 완벽한 대답입니다. CSS가 깨질 수 있습니다. 부트 스트랩 (예 : form-row)을 사용할 때 특히 그렇습니다. 따라서이 답변은 꽤 좋습니다.
Sudhir K Gupta

73

나는 이것을 사용하고 싶다;

$('#container').prop('outerHTML');

7
이것은 나에게 가장 좋은 해결책 인 것처럼 보이며, dom 조작 또는 의사 dom 조작 (랩 방법)이 필요하지 않습니다. 그리고 jquery 객체에는 이미 속성이 있습니다.
Nieminen

1
이 솔루션을 사랑
Sameera Kumarasingha

69
var x = $('#container')[0].outerHTML;

1
Firefox 문제가 최신 버전이 아니므로이 답변에 투표하는 것이 좋습니다.
Rob

1
.clone () 사용하면 작동하지만 훨씬 더 깨끗합니다. 허용되는 답변은 DOM = bad에 새 요소를 만듭니다.
pete

13
$('#container').clone().wrapAll("<div/>").parent().html();

업데이트 : outerHTML은 파이어 폭스에서 작동하므로 매우 오래된 버전의 파이어 폭스를 지원하지 않으면 다른 답변을 사용하십시오


outerHTML 속성은 Firefox에서 작동하지 않으므로 클론으로해야합니다
Robert Noack

2

Oldie but goldie ...

사용자가 jQuery를 요청하므로 간단하게 유지하겠습니다.

var html = $('#container').clone();
console.log(html);

여기 바이올린


2
이것은 컨테이너 자체의 HTML을 검색하는 데 도움이되지 않습니다. 심지어 HTML 코드를 반환하지 않습니다. dom 수정을 피하기 위해 clone을 통해 대상 노드에 액세스하는 것이 실용적 일 수 있지만이 방법을 사용하는 이유를 언급하는 것이 좋습니다.
AeonOfTime



0
var x = $($('div').html($('#container').clone())).html();

6
하나의 명령문에서 3 개의 jquery 오브젝트를 작성 중입니다. 작동하지만 과잉입니다.
Pinkie

-2

예제가있는 간단한 솔루션 :

<div id="id_div">
  <p>content<p>
</div>

id = "other_div_id"인이 DIV를 다른 DIV로 이동

$('#other_div_id').prepend( $('#id_div') );


OP는 jQuery 객체로 표현 된 원시 HTML을 요청합니다.이 메소드는 jQuery 객체를 한 곳에서 다른 곳으로 이동합니다.
Simon Robb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.