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を返すようにします。

もちろん、何らかの理由でそれを にする必要がある場合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 に答える