jQuery:获取元素的“原始”内容

时间:2013-07-03 21:06:55

标签: javascript jquery

我有这个div:

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

我确实得到了它的内容,就像上面报道的那样(花括号语法是模板引擎)。

不幸的是,.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>
{{?}}

.html()对&符号进行编码(和&lt;&gt;)。

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:8)

将模板存储为HTML并不是一个好主意。使用自定义mimetype将它们存储在<script>标记内:

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

将非HTML作为HTML的模板存储会产生不良结果,如您所知:

  • 您的原始标记已消失。当您查看.innerHTML属性时,您看到的是浏览器解释您的模板的内容,如果它是有效的HTML,可以更改它:http://jsfiddle.net/ZFd6a/3/
  • a<b && b>c将变为ac,因为中间部分将被解释为元素。
  • 小于号和大于号的符号将变成字符实体。
  • 您必须使用HTML字符实体。

你完全受浏览器HTML解析器的支配。当您将模板移动到<script>标签时,其mimetype不是为JavaScript保留的,您的模板将被视为字符串,这正是您想要的。