jQuery 객체를 문자열로 어떻게 변환합니까?
-
19-08-2019 - |
문제
jQuery 객체를 문자열로 어떻게 변환합니까?
해결책
전체 HTML 문자열을 요구한다고 가정합니다. 이 경우 이런 일이 트릭을 수행 할 것입니다.
$('<div>').append($('#item-of-interest').clone()).html();
이것은 더 깊이 설명됩니다 여기, 그러나 본질적으로 관심있는 항목을 감싸고 조작을 수행하고 제거하고 HTML을 잡기 위해 새 노드를 만듭니다.
문자열 표현 직후에 new String(obj)
.
업데이트
2009 년에 원래 답변을 썼습니다. 2014 년 현재 대부분의 주요 브라우저는 이제 지원합니다. outerHTML
기본 재산으로서 (예를 들어, Firefox 그리고 인터넷 익스플로러), 당신은 할 수 있습니다 :
$('#item-of-interest').prop('outerHTML');
다른 팁
jQuery 1.6에서는 더 우아한 솔루션 인 것 같습니다.
$('#element-of-interest').prop('outerHTML');
.get (0)를 사용하여 기본 요소를 잡고 outerhtml 속성을 얻으십시오.
var $elem = $('<a href="#">Some element</a>');
console.log("HTML is: " + $elem.get(0).outerHTML);
좀 더 구체적 일 수 있습니까? 당신이 얻으려고한다면 HTML 태그 내부에서 다음과 같은 작업을 수행 할 수 있습니다.
HTML 스 니펫 :
<p><b>This is some text</b></p>
jQuery :
var txt = $('p').html(); // Value of text is <b>This is some text</b>
HTML 노드 (개체)에서 사용할 수있는 속성과 메소드를 찾는 가장 좋은 방법은 다음과 같은 작업을 수행하는 것입니다.
console.log($("#my-node"));
jQuery 1.6+에서 OUTERHTML을 사용하여 문자열 출력에 HTML 태그를 포함시킬 수 있습니다.
var node = $("#my-node").outerHTML;
jQuery는 여기에 있습니다.
jQuery.fn.goodOLauterHTML= function() {
return $('<a></a>').append( this.clone() ).html();
}
모든 HTML 물건을 반환하십시오.
$('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all
이것은 나에게 잘 작동하는 것 같습니다.
$("#id")[0].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 ()를 사용하기 위해 DOM에 복제하고 추가 할 필요가 없습니다.
$('#item-of-interest').wrap('<div></div>').html()
사용하는 것이 가능할 수 있습니다 jQuery.makeArray(obj)
유틸리티 기능 :
var obj = $('<p />',{'class':'className'}).html('peekaboo');
var objArr = $.makeArray(obj);
var plainText = objArr[0];
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();
new String(myobj)
전체 객체를 문자열로 직렬화하려면 사용하십시오. JSON.