6

我目前有一个像这样的 html 模态块:

<div id="modal">
   <div class="header_buttons"></div>
   <p> 
       Are you sure you would like to perform <%= action_name %> 
       on <%= count %> objects?
   </p>
   <div class="footer_buttons">
        <button>Do <%= action_name %></button>
   </div>
</div>

我想通过解析这个内容_.template

$("#modal").html() //-> escapes `<%` 
$("#modal").text() //-> doesn't escape, but doesn't include tags. 

我的直接解决方案是针对每个元素而不是整个块,以便我可以使用text(),但我很好奇这里是否有明显的解决方案?

4

3 回答 3

9

您经常看到的一个解决方案是将 HTML 嵌入模板放在脚本标签中,这些标签不是 HTML 转义的。

所以把你div变成:

<script id="modal" type="text/template">
   ...
</script>

...将$("#modal").html()返回原始 HTML。

当然,如果出于某种原因您需要将它放在 a 中div,那么这不适合您。

于 2012-08-10T22:15:05.620 回答
4

只需使用.html(),然后搜索并替换您的模板标签:

$("#modal").html().replace(/&lt;%=/g, '<%=').replace(/%&gt;/g, '%>');

这是小提琴:http: //jsfiddle.net/PwL7L/

于 2012-08-10T22:04:19.073 回答
1

_.unescape应该可以帮助您使用 div 而不是脚本。

_.unescape($("#modal").html());

于 2014-09-12T04:16:52.370 回答