我有这个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 && b || c < 0 }}
<div>Pece &alt; Love!</div>
{{?}}
.html() 对 & 符号(和 < >)进行编码。
有什么帮助吗?谢谢
最佳答案
将模板存储为 HTML 并不是一个好主意。将它们存储在 <script>
内具有自定义 mimetype 的标签:
<script type="text/your-template" id="template">
{{? a<b && b>c }}
<div>Peace & Love!</div>
{{?}}
</script>
正如您所注意到的,将非 HTML 模板存储为 HTML 会产生不良结果:
- 您的原始标记已消失。当您查看
.innerHTML
时您会看到什么property 是浏览器将您的模板解释为有效 HTML 的内容,可以更改它:http://jsfiddle.net/ZFd6a/3/ -
a<b && b>c
将变成ac
,因为中间部分将被解释为一个元素。 - 杂散的小于号和大于号将被转换为字符实体。
- 您必须使用 HTML 字符实体。
您完全受浏览器 HTML 解析器的支配。当您将模板移至<script>
时如果标签的 mimetype 不是为 JavaScript 保留的,则您的模板将被视为字符串,这正是您想要的。
关于javascript - jQuery:获取元素的 "raw"内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458121/