2013-07-03 6 views
0

의 "원시"내용을 얻기 나는이 DIV 있습니다JQuery와 : 요소

<div id="test"> 
    {{? a && b || c < 0}} 
     <div>Pece &alt; Love!</div> 
    {{?}} 
</div> 

나는 그것이 위에보고 된 것처럼 자사의 콘텐츠를 할 NEET을 (체 중괄호 구문은 템플릿 엔진이다).

불행하게도, 둘 .html 중에서()도는 .text()가 작동하지 :

// $('#test').text() 
{{? a && b || c < 0}} 
    Pece &alt; Love! 
{{?}} 

는 .text()를 태그

// $('#test').html() 
{{? a &amp;&amp; b || c &lt; 0 }} 
    <div>Pece &amp;alt; Love!</div> 
{{?}} 

들이게된다 (못된)는 앰퍼샌드를 인코딩 (및 < >).

어떤 도움이 필요합니까? 감사합니다

+1

은 대체? – Cheluis

+0

'.text()'의 출력에 어떤 문제가 있습니까? – Blender

+3

해당 HTML이 브라우저에 관한 한 더 이상 존재하지 않습니다. 구문 분석이 끝나면 HTML로만 파싱됩니다. HTML로만 파싱됩니다. – lonesomeday

답변

8

그것은 HTML로 템플릿을 저장하는 것은 좋은 생각이 아니다. 사용자 정의 마임과 <script> 태그의 내부에 저장할 : 당신이 눈치 챘로

<script type="text/your-template" id="template"> 
    {{? a<b && b>c }} 
     <div>Peace &amp; Love!</div> 
    {{?}} 
</script> 

것은 바람직하지 않은 결과를 얻을 것이다 HTML로 HTML없는 템플릿을 저장 :

  • 원래 마크 업이 사라 졌어요. 중간 부분이 요소로 해석됩니다으로 http://jsfiddle.net/ZFd6a/3/
  • a<b && b>cac로 바뀝니다 : 당신이 .innerHTML 특성을 볼 때 당신이 보는 것은 브라우저가 유효한 HTML, 변경할 수있는라면으로 템플릿을 해석 것입니다 .
  • 길 잃은이 덜보다 및 징후보다 큰 문자 엔티티로 전환됩니다.
  • 당신은 HTML 문자 엔티티를 사용해야합니다.

당신은 브라우저의 HTML 파서의 자비에 완전히입니다. JavaScript 용으로 예약되지 않은 mimetype을 사용하여 <script> 태그로 템플릿을 옮기면 템플릿이 원하는대로 정확하게 처리됩니다.

템플릿 이전 또는 이후에이 작업을 수행해야
+1

http://jsfiddle.net/FX88y/ –

+0

덕분에, 나는이 알고 있어요, 나는 doTjs를 사용할 때 일반적으로 그렇게. 이 경우에는 일반 태그를 사용해야합니다. – pistacchio

+2

@pistacchio : 왜? – Blender