답변:
나는 당신이 완전한 HTML 문자열을 요구한다고 가정합니다. 이 경우 다음과 같은 방법으로 트릭을 수행 할 수 있습니다.
$('<div>').append($('#item-of-interest').clone()).html();
여기서는 더 자세히 설명 하지만 본질적으로 관심있는 항목을 감싸고 조작하고 제거하고 HTML을 가져 오기 위해 새 노드를 만듭니다.
문자열 표현 바로 뒤에 있다면으로 이동하십시오 new String(obj)
.
2009 년에 원래의 답변을 썼습니다. 2014 년 현재 대부분의 주요 브라우저 outerHTML
는 기본 속성 (예 : Firefox 및 Internet Explorer 참조 )으로 지원하므로 다음을 수행 할 수 있습니다.
$('#item-of-interest').prop('outerHTML');
$(...)
유효한 DOM 노드입니다.)
data
HTML 노드 (객체)에서 사용할 수있는 속성 및 메서드를 찾는 가장 좋은 방법은 다음과 같은 작업을 수행하는 것입니다.
console.log($("#my-node"));
jQuery 1.6 이상에서는 outerHTML을 사용하여 문자열 출력에 HTML 태그를 포함시킬 수 있습니다.
var node = $("#my-node").outerHTML;
$('#my-node').get(0).outerHTML
mppfiles의 대답과 같습니다
.outerHTML
나를 위해 일 .prop('outerHTML')
하지 않았다.
허용되는 답변에는 텍스트 노드가 포함되지 않습니다 (정의되지 않음이 인쇄 됨).
이 코드 스 니펫은 다음을 해결합니다.
var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'),
htmlString = '';
htmlElements.each(function () {
var element = $(this).get(0);
if (element.nodeType === Node.ELEMENT_NODE) {
htmlString += element.outerHTML;
}
else if (element.nodeType === Node.TEXT_NODE) {
htmlString += element.nodeValue;
}
});
alert('String html: ' + htmlString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
HTML 요소를 문자열로 묶어 어딘가에 전달하고 요소로 다시 구문 분석하려면 요소에 대한 고유 쿼리를 작성하십시오.
// 'e' is a circular object that can't be stringify
var e = document.getElementById('MyElement')
// now 'e_str' is a unique query for this element that can be stringify
var e_str = e.tagName
+ ( e.id != "" ? "#" + e.id : "")
+ ( e.className != "" ? "." + e.className.replace(' ','.') : "");
//now you can stringify your element to JSON string
var e_json = JSON.stringify({
'element': e_str
})
...보다
//parse it back to an object
var obj = JSON.parse( e_json )
//finally connect the 'obj.element' varible to it's element
obj.element = document.querySelector( obj.element )
//now the 'obj.element' is the actual element and you can click it for example:
obj.element.click();