jQuery获取原始文本(未转义),以便通过下划线模板进一步解析

时间:2012-08-10 21:55:48

标签: javascript html underscore.js

我目前有一个像这样的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()但我很好奇这里是否有明显的解决方案呢?

3 个答案:

答案 0 :(得分:8)

您经常看到的解决方案是将HTML嵌入式模板放在脚本标记中,而不是HTML转义。

将您的div转换为:

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

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

当然,如果有某种原因你需要它在div,那么这不适合你。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:1)

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

  。

_ UNESCAPE($(&#34;#模态&#34;)HTML());