jQuery的获取原始文本(转义),用于通过下划线模板进一步解析(jQuery get raw te

2019-07-30 21:46发布

我现在有像这样的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()但我很好奇,如果有,否则这里是一个显而易见的解决方案?

Answer 1:

你看到了很多的解决方案是将HTML嵌入模板脚本标记,这是不是HTML转义。

所以,将您的div到:

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

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

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



Answer 2:

只要使用.html()然后搜索并替换模板标签:

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

这里的小提琴: http://jsfiddle.net/PwL7L/



Answer 3:

_.unescape应该帮助你使用DIV,而不是脚本。

_.unescape($( “#模式”)HTML());



文章来源: jQuery get raw text (unescaped) for further parsing via underscore templates