2017-11-24 1 views
2

I가 다음과 같은 HTML :추출 HTML

var html = jQuery('#parent').html(); 
 
console.log(html)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child"></div> 
 
    5 > 3 
 
</div>

나는 jQuery('#parent').html(); 할 나는 다음과 같은 문자열을 얻을 :

'<div id="child"></div> 
5 &gt; 3' 

내가 원하는을 대신 다음 문자열을 가져 오십시오.

'<div id="child"></div> 
5 > 3' 

어떻게 달성 할 수 있습니까?

미리 텍스트 노드의 값을 알 수 없으므로주의하십시오. 텍스트 노드 (존재하는 경우)의 값을 일부 html 엔티티 이름으로 인코딩하는 것을 원하지 않습니다.

이 질문은 전술 게시물 하지 대답이 질문에을 수행 How to decode HTML entities using jQuery?때문에의 중복 없습니다.

현재 질문은 &gt;과 같은 html 엔티티 이름을 >으로 디코딩하는 방법과 관련이 없습니다. 이것은 쉽다.

현재의 문제는 이 encodable 값을 포함하는 텍스트 노드를 포함하고 나는 이러한 값은 어떤 방식으로 인코딩/포맷 싶지 않아 HTML을 추출에 관한 것입니다.

답변

3

jQuery가 DOM에 추가되지 않는 요소의 html을 디코딩하도록하여이를 시도해보십시오. 당신이 일반 JS 방법을 찾고 있다면

var html = jQuery('<textarea/>').html(jQuery('#parent').html()).text(); 
 

 
console.log(html)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child"></div> 
 
    5 > 3 
 
</div>

+0

흥미로운 접근법 – sTx

+0

오, 이거 아름답습니다. - 고맙습니다. 클라우드 :-D –

+0

이것은 흥미로운 것 같습니다 !!!. 위대한 @claudio –

2

, 다음 parentchildnode의를 반복하고

데모 그 값 연결할

var html = ""; 
 
[].slice.call(document.getElementById("parent").childNodes).forEach(function(item) { 
 
    html += (item.nodeType == 3 ? item.nodeValue : item.outerHTML); 
 
}); 
 
console.log(html);
<div id="parent"> 
 
    <div id="child"></div> 
 
    5 > 3 
 
</div>

+0

그것은 다른 답변에 비해 너무 장황하다, 다른 한편으로는 jQuery에 의존하지 않는다. 그래서 나의 사과, 그것은 upvote의 가치가있다 :) –